尽管在主参数声明中写了我的名字,但这个程序仍然可以正常工作,没有任何警告。
#include <stdio.h>
int main(Mr32)
{
printf("why this works?");
return 0;
}
每当我在mr32的位置写任何东西时,代码仍然能够运行。我真的不知道为什么会发生这种情况。
根据C编程标准来看,这是错误的,对吧?
编辑:我尝试了-Wall,但没有任何警告。
我认为这里应该是错误的,因为我没有按照标准的C函数定义声明进行。
在C中,每个函数定义都必须遵循此格式
return-type function_name ( arg_type arg1, ..., arg_type argN );
这也适用于main()函数,对吗..??
好的,-Wextra会显示警告,mr32默认为int类型。
那么为什么main()函数中任何参数的默认类型都是int呢?
#include <stdio.h>
外,gcc 即使使用-Wall
也不会抱怨。只有使用-Wextra
才会抱怨Mr32
默认为int
。问题更多地涉及默认的 main 参数:哪个规范定义了 main 的类型默认为 int? - Matteogcc -Wextra
会发出警告。但问题是:为什么是警告而不是错误?为什么默认为int
?这在哪里和如何指定? - Matteogcc -std=c89 -pedantic -Wall -Wmissing-parameter-type -Wold-style-definition
命令。第一个警告已包含在-Wextra
中;第二个警告是独立的。 - pmg