Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/165.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C中main函数的第四个参数指向什么?_C++_C_Arguments_Main - Fatal编程技术网

C++ C中main函数的第四个参数指向什么?

C++ C中main函数的第四个参数指向什么?,c++,c,arguments,main,C++,C,Arguments,Main,我们有 int main(int argc, char** argv, char** envc) 为了普通人。但是我想知道是否有其他的论点可以代替这些。如果有,它指向什么?只有argc和argv是标准参数。之后的任何操作都取决于您的系统和编译器。好吧,下面是故障: argc--C标准 argv--C标准 env——适用于大多数UNIX和MS Win,但不是标准的 apple——Mac OSX和Darwin作为第四个参数传递的其他信息 我想这回答了你的问题: 答案在C和C++中有所不同:

我们有

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

为了普通人。但是我想知道是否有其他的论点可以代替这些。如果有,它指向什么?

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

好吧,下面是故障:

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

    • 我想这回答了你的问题:


      答案在C和C++中有所不同:

        <> > C++ >代码>主< <代码>必须始终返回<代码> int <代码>。每个实现都必须接受
        ()
        (int,char**)
        签名。实现可以接受任何其他签名。如果接受的签名以
        int、char**、
        开头,则这些签名应具有通常的含义。(另外,
        main
        获取C链接,不能重载,不能是模板,也不能调用。)

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


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

      它是标准的扩展:
      但它应该提供进入环境的途径:

      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 );
      

      thnaks。帮了我很多忙。我在英特尔x86 Ubuntu 12.04上编译带有任意参数的代码,结果是wierd。再次感谢这些记录,在C独立环境中可能有一个不同于 INT/COM>的实现定义返回类型。@ JensGustedt:一个独立的环境根本不需要<代码>主< /> >,C和C++都不需要。我所说的一切只适用于托管环境。