#include<stdio.h>
void fun(z)
{
printf("%d",z);
}
int main()
{
int a=5;
fun(a);
}
这给出的输出为 5。它不应该给出错误 - 未声明的变量 z 吗?
这是编译器优化吗?
最佳答案
这不是编译器优化,而是遵守古老的 C 约定,允许您在所需类型为 int
时跳过变量和参数类型。此约定早于 ANSI 标准,即使您的编译器可以处理此类代码,也应避免使用此约定。
如果您告诉编译器您希望代码符合更现代的标准之一(例如 C99 或 C11),您将收到警告。该标志取决于编译器。如果您使用的是 gcc
,请添加
-std=c99
标记以查看警告。
关于c - 在 C 中,为什么传递给 void 函数的参数在编译时必须抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546632/