1

为什么当我这样声明主函数时我的 C 程序不起作用(我颠倒了参数位置):

int main(char * argv, int argc){
}

我编译它没有问题,但是当我运行它时出现错误。

谢谢。

4

3 回答 3

3

由于main()签名不正确,这不是一个有效的 C 程序。

尝试启用编译器警告。我的编译器告诉我这个问题:

$ gcc -Wall test.c 
test.c:1:5: warning: first argument of 'main' should be 'int' [-Wmain]
test.c:1:5: warning: second argument of 'main' should be 'char **' [-Wmain]

请参阅C 的 main() 函数的有效签名是什么?

于 2013-10-26T15:10:36.573 回答
2

与 C++ 不同,C 中的函数仅由它们的名称而不是它们的参数来标识。例如,当链接器看到“主要”功能时,它会非常高兴。

然而,有一些假设 main() 是如何被操作系统调用的。运行时环境。当您的参数错误时,您的程序将看到意外的值并可能崩溃。

And btw, you probably will see errors or warnings when you enable diagnostics (e.g. '-Wall -W') when building the program.

于 2013-10-26T15:14:47.247 回答
1

这是一个不正确的 main() 签名。您可以检查主要功能

参数 argc, argument count, 和 argv, argument vector, 1 分别给出程序命令行参数的个数和值。argc 和 argv 的名称可以是 C 中的任何有效标识符,但使用这些名称是常见的约定。

还要检查C 和 C++ 中 main() 应该返回什么?

于 2013-10-26T15:11:51.403 回答