zoukankan      html  css  js  c++  java
  • main函数是个什么东西

        习惯的main函数有无参和两个参数的版本,那么main函数只能这么写吗?

        好奇写了一个bug版本的main,结果是呵呵

            #include <iostream>
            #include <string>
            using namespace std;

            int main(int argc, char** argv, char* p, char a)
            {
                    cout << "qq" << endl;
            }

        编译过了,真是出乎意料,程序也打印正常。

        关于main函数,网上搜的结果仅作为参考,main函数只是编译器设置的入口,操作系统并不是从main启动的,在main之前会执行一些嵌入式的操作,把程序入参整理成argc和argv,并找到名为main的函数传参和顺序执行函数。这里是找到名字为main的函数,不会检验参数。

        再改一下例子,看main函数对参数到底是不是没有要求?

    #include <iostream>
    #include <string>
    using namespace std;

    /*int main(int argc)
    {
        cout << argc << endl;
    }
    */

    int main (char** argv)
    {
        cout << argv[0] << endl;
    }

        被注释的main是正常工作的,可以打印出参数个数,第二个main段错误,推测main函数的原型是一个变长参数的特殊函数

        int main(...),原型应该是这样的

        int main(int argc, char** argv)这里的第一和第二参数是c和c++标准的默认约定,系统处理完所有的入参该调用main的时候就会把第一个参数指向参数数量的地址,第二个参数指向参数指针的地址,其他参数是未定义的行为,参数列表不符合标准的行为都是未知的。

        提问仙人

            在windows下曾经写过void main()的函数,那么void main()和int main()是怎么处理的,函数无法通过返回值类型区分重载......,你到底有多特殊?

            linux要求main必须返回int,不存在这个疑惑。

            错误:‘::main’ 必须返回 ‘int’

  • 相关阅读:
    Linux查看内容命令[持续添加]
    android4.0 x86下载编译简介
    android4.0 x86 裁剪与定制
    Android4.0 x86源码结构,生成目录结构
    android4.0 x86编译生成文件系统镜像system.img结构简介
    [翻译]Mootools 1.2新特性(一):元素存储(Element Storage)
    ASP.NET MVC Preview 3 STEP BY STEP 文章管理实例(一)
    Microsoft Speech API SDK
    PB串口编程资料MSCOMM32参数基本介绍
    Microsoft Speech API Overview(SAPI 5.4)
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/4445050.html
Copyright © 2011-2022 走看看