【问题标题】:Why don't I get a warning while passing parameter to a function which should not accept any incoming parameter? [duplicate]为什么在将参数传递给不应接受任何传入参数的函数时没有收到警告? [复制]
【发布时间】:2025-12-11 08:40:01
【问题描述】:

我有一个类似的功能:

//in header
int Foo()
// in source file
int Foo()
{
    return 1;
}

在我访问的另一个源文件中,我访问的功能如下:

int aninteger;
result = Foo(aninteger);

该代码正在编译而没有发出任何警告。知道为什么吗? 如何设置 Visual Studio 以警告我函数调用中的参数不匹配?

【问题讨论】:

标签: c function syntax parameter-passing


【解决方案1】:

发生这种情况是因为,使用空参数列表声明的函数表示编译器不知道要传递或处理的实际参数。因此,一般而言,编译器没有义务生成任何诊断信息。

改为使用int Foo(void) 明确提及缺少参数。

在 gcc 中,您可以使用 -Wstrict-prototypes 选项通知编译器警告您注意前一个不匹配。

【讨论】: