C语言 为什么在反转主函数参数位置时编译仍然有效



为什么当我像这样声明主函数时我的 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++ 中返回什么?

相关内容

  • 没有找到相关文章

最新更新