c - 在 C 中,为什么传递给 void 函数的参数在编译时必须抛出错误

标签 c function declaration

#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/

相关文章:

c - 找到最小时间和日期戳的有效方法是什么?

c++ - 音频重采样库

c++ - 在以下情况下从套接字读取数据已损坏?

c++ - 如何在类中添加函数而不是在 C++ 中的头文件中?

php - fatal error : Call to a member function error() on a non-object

c - 这部分代码有什么错误?

function - Emacs 中的书签问题

c++ - 帮助声明 C++ 结构,并将 float 组作为其成员之一

c++ - 如何在类中声明一个类并在以后定义它?

scala - 函数参数类型和 =>