Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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 - Fatal编程技术网

关于C的主函数

关于C的主函数,c,C,我这样定义, intmain(inta,intb,intc){……} 它起作用了。我不理解第一行“实现没有声明此函数的原型” 需要帮助,谢谢当你制作一个原型时,这意味着你想在别处调用它,这与main函数的情况不同 从:- 5.1.2.2.1程序启动 1程序启动时调用的函数名为main。这个 实现没有声明此函数的原型。应该是 使用int的返回类型定义且不带参数: int main(void){/*…*/} 或者使用两个参数(此处称为argc和argv,尽管有 可以使用名称,因为它们是其所在函数的本

我这样定义,

intmain(inta,intb,intc){……}

它起作用了。我不理解第一行
“实现没有声明此函数的原型”


需要帮助,谢谢

当你制作一个原型时,这意味着你想在别处调用它,这与
main
函数的情况不同

从:-

5.1.2.2.1程序启动

1程序启动时调用的函数名为main。这个 实现没有声明此函数的原型。应该是 使用int的返回类型定义且不带参数:

int main(void){/*…*/}

或者使用两个参数(此处称为argc和argv,尽管有 可以使用名称,因为它们是其所在函数的本地名称 声明):

int main(int argc,char
*argv[]
){/*…*/}

或同等品;9) 或者以其他实现定义的方式


当你制作一个原型时,这意味着你想在别处调用它,而不是在
main
函数中

从:-

5.1.2.2.1程序启动

1程序启动时调用的函数名为main。这个 实现没有声明此函数的原型。应该是 使用int的返回类型定义且不带参数:

int main(void){/*…*/}

或者使用两个参数(此处称为argc和argv,尽管有 可以使用名称,因为它们是其所在函数的本地名称 声明):

int main(int argc,char
*argv[]
){/*…*/}

或同等品;9) 或者以其他实现定义的方式


主功能不需要声明或原型

main
以外的函数需要声明和 定义

5.1.2.2.1 Program startup
The implementation declares no prototype for this function. It shall be defined
with a return type of int and with no parameters.

主功能不需要声明或原型

main
以外的函数需要声明和 定义

5.1.2.2.1 Program startup
The implementation declares no prototype for this function. It shall be defined
with a return type of int and with no parameters.

您遗漏了标准中该部分的其余部分,我将引用C99标准草案,其中说明:

或者使用两个参数(此处称为argc和argv,但可以使用任何名称) 使用,因为它们是声明它们的函数的本地函数):

或同等品;9) 或者以其他实现定义的方式

应定义
是引用的重要部分,它表示必须遵循这两个签名中的一个,或编译器实现者定义的特定于实现的签名(如果可用)

如果我试图在最新版本的
clang
中构建此功能,我会看到以下错误:

int main(int argc, char *argv[]) { /* ... */ }

您遗漏了标准中该部分的其余部分,我将引用C99标准草案,其中说明:

或者使用两个参数(此处称为argc和argv,但可以使用任何名称) 使用,因为它们是声明它们的函数的本地函数):

或同等品;9) 或者以其他实现定义的方式

应定义
是引用的重要部分,它表示必须遵循这两个签名中的一个,或编译器实现者定义的特定于实现的签名(如果可用)

如果我试图在最新版本的
clang
中构建此功能,我会看到以下错误:

int main(int argc, char *argv[]) { /* ... */ }

这意味着,
main
没有预先声明。没有比这更好的线了

error: second parameter of 'main' (argument array) must be of type 'char **'
  int main(int a, int b, int c){}
error: third parameter of 'main' (environment) must be of type 'char **'
这意味着在定义函数时,可以假装它接受任何参数并返回任何类型,而不会出现编译器错误


当然,
main
是由操作系统调用的,因此它希望您的定义与它用于传递参数的任何约定相匹配。实际上,除了在嵌入式系统上,您对main的定义必须与上述内容相匹配。

这意味着,
main
没有事先声明。没有比这更好的线了

error: second parameter of 'main' (argument array) must be of type 'char **'
  int main(int a, int b, int c){}
error: third parameter of 'main' (environment) must be of type 'char **'
这意味着在定义函数时,可以假装它接受任何参数并返回任何类型,而不会出现编译器错误


当然,
main
是由操作系统调用的,因此它希望您的定义与它用于传递参数的任何约定相匹配。实际上,除了在嵌入式系统上,您对main的定义必须与上述内容相匹配。

您对main的第二个签名引用错误-cf.
char*argv[]
@maxschlepzig:-这是正确的,但当我引用它时,*被遗漏了!!!更新内容:)main的第二个签名被错误引用-cf.
char*argv[]
@maxschlepzig:-这是正确的,但当我引用它时,*被遗漏了!!!更新内容:)你的问题是关于第一行的意思,或者为什么你的声明“有效”?@Barmar:为什么我对主要作品的定义。你的问题是关于第一行的意思,或者为什么你的声明“有效”?@Barmar:为什么我对主要作品的定义。如果我将主要作品定义为int main(int a,int b,int c)会怎样?@Patil该标准不允许您有两个选择,详见第
5.1.2.2.1节
如果您的编译器允许,那么它不符合标准,或者不太可能有实现定义的签名,但它必须记录。如果我将main定义为int main(int a、int b、int c),该怎么办?@Patil这是标准不允许的。您有两个选择,详见第
5.1.2.2.1节
如果您的编译器允许,那么它不符合标准,或者不太可能有一些实现定义的签名,但它必须记录这两个选择。