为什么当我像这样声明主函数时我的 C 程序不起作用(我颠倒了参数位置):
int main(char * argv, int argc){
}
我编译它没有问题,但运行时出现错误。
谢谢。
> 由于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() 函数的有效签名是什么?
与C++不同,C 中的函数仅由它们的名称标识,而不是它们的参数。 例如,当链接器看到"main"函数时,它会非常高兴。
尽管如此,操作系统或运行时环境如何调用 main() 还是有一些假设。 当参数错误时,程序将看到意外值并可能崩溃。
顺便说一句,当您在构建程序时启用诊断(例如"-Wall -W")时,您可能会看到错误或警告。
这是一个不正确的主()签名。您可以检查主功能。
参数参数argc、参数计数和参数参数向量 argv,1 分别给出程序命令行的数量和值 参数。argc 和 argv 的名称可以是 C,但使用这些名称是常见的惯例。
还要检查 main() 应该在 C 和 C++ 中返回什么?