为什么在将main声明为`int main(void)`时传递命令行参数时没有错误?

极客

情况1:

void hello(void) {
    //something
}

int main()
{
    hello(1); //error
    return 0;
}

情况2:

int main(void) {
    //something
    return 0;
}

执行:

./a.out something something //No error, Why?

为什么没有错误?main将无法接受任何参数。那么,为什么可以从命令行提供参数呢?

gnasher729

因为C编译器和命令行解释器(或用于调用程序的任何东西)是不同的。

C语言允许以多种方式声明main()。

命令行解释器将使程序可以使用任何参数。如果程序忽略了它们,那不关它的事。

命令行解释器甚至都不知道您使用C来编译程序。在我的计算机上,该程序可以用C,C ++,Objective-C,Objective-C ++,Swift,Fortran,Ada等编写。这些编译器中的每一个都可能会或可能不会做一些事情来接受命令行中的命令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将main声明为数组可以编译?

为什么main()在Java中声明为public和static

为什么将CompletableFuture.allOf声明为CompletableFuture <Void>?

为什么将函数参数声明为final?

为什么将匿名JavaScript函数声明为函数参数?

使用argparse将命令行参数传递给Python脚本时出现小错误

将命令行参数传递给Shell脚本时出现I / O错误

除非我将main声明为wmain,否则我的应用程序将无法运行。这是为什么?(Visual Studio 19)

当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

为什么不能在 Kotlin 中将“`main`”函数声明为 lambda?

在Java中,即使main()没有保存命令行参数,也有办法获取命令行参数吗?

2D数组:当我将ptr声明为int ptr [4] [4]时,为什么ptr和* ptr相同?

尽管变量的类型声明为double,但为什么java会给出int太大的错误?

为什么将数组声明为3时只接受2个值?

将函数的参数声明为final:为什么以及何时需要它?

如果将A的通用子类型声明为return参数,为什么不能返回A的具体子类型?

为什么无法将Intent Service声明为私有包?

为什么将 CosmosClient 声明为私有静态可以解决我的问题?

传递给Java main()的命令行参数中的引号

当在int main()之前而不是在int之前声明函数时,为什么函数起作用?

尝试使用命令行参数时,将ls命令传递给for循环中断

为什么有时有时将复制构造函数声明为显式非内联的?

为什么Reads没有声明为协变?

当我将其声明为浮点数时,为什么series是一个int值?

为什么在命令行上运行dolphindb时没有输出?

Windows没有将命令行参数传递给从外壳执行的Python程序

启动测试时如何将浏览器作为命令行参数传递

使用-n或-p选项时,是否可以将命令行参数传递给@ARGV?

在python 2.7.12中传递命令行参数时将变量附加为字符串