【问题标题】:What does 4th argument of main function in C point to?C中main函数的第四个参数指向什么?
【发布时间】:2012-08-14 18:38:49
【问题描述】:

我们有

int main(int argc, char** argv, char** envc)

对于普通人。但我想知道是否有任何其他参数 main 可以代替这些。如果有的话,它指向什么?

【问题讨论】:

    标签: c++ c arguments main


    【解决方案1】:

    好吧,下面是细分:

    • argc -- C 标准
    • argv -- C 标准
    • env -- 适用于大多数 UNIX 和 MS Win,但不是标准的
    • apple -- Mac OSX 和 Darwin 作为第四个参数传递的其他信息

    【讨论】:

    • thnaks 。帮了我很多。我在 Intel x86 Ubuntu 12.04 上使用任意参数编译代码,结果很奇怪。再次感谢
    【解决方案2】:

    C 和 C++ 的答案不同:

    • 在 C++ 中,main 必须始终返回 int。每个实现都必须接受()(int, char**) 签名。实现可能接受任何其他签名。 如果接受的签名以int, char**, ... 开头,则那些应该具有通常的含义。 (另外,main 获取 C 链接,不得重载,不得为模板,不得调用。)

    • 在 C 中,main 可以采用任何形式。但是,每个实现都必须接受 int(void)int(int, char**) 类型。

    正如您所注意到的,某些环境支持并符合这些准则的一个流行签名是int main(int argc, char * argv[], char * env[]),其中第三个参数包含指向环境的指针。其他扩展是可以想象的;检查您平台的文档。

    【讨论】:

    • 对于记录,在 C 独立环境中,实现定义的返回类型可能与 int 不同。
    • @JensGustedt:独立环境根本不需要main,无论是在C 还是C++ 中。我所说的一切仅适用于托管环境。
    【解决方案3】:

    只有 argc 和 argv 是标准参数。之后的任何事情都取决于您的系统和编译器。

    【讨论】:

      【解决方案4】:

      我认为这回答了你的问题:

      http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B

      【讨论】:

        【解决方案5】:

        它是标准的扩展:
        但它应该提供对环境的访问:

        int main(int argc, char** argv, char** envc)
        {
            // It is an array of pointers to C-String
            // The array is terminated with a NULL pointer.
            // So you can loop over with it like this.
            for(int loop = 0;envc[loop] != NULL; ++loop)
            {
                fprintf(stdout, "%s\n", envc[loop]);
            }
        }
        
        • argc:argv 中有效元素的数量
        • argv:用于命令行参数的 C 字符串数组。
        • envc:环境的 C 字符串数组(由 NULL 指针终止)。

        使用getenv 可能会更好:

        char * getenv ( const char * name );
        

        http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-12
          • 2022-06-20
          • 1970-01-01
          • 2016-11-28
          • 1970-01-01
          • 2015-10-01
          • 2017-06-11
          • 2018-04-23
          相关资源
          最近更新 更多