微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么C和C之间的未命名参数警告不一致?

我有以下C/C++程序,我编译它所有警告.

int foo(int x){return 5; }

C编译器给我一个关于未引用的形式参数的警告.当我删除“x”以使签名读取“int foo(int)”时,编译器很高兴.

另一方面,C编译器喜欢命名参数,并在未命名时发出警告.

编辑:它发出错误,而不是警告.

为什么不同?理由是什么?

附:我正在使用GNU编译器工具链.

解决方法

C的一个原因可能是它仍然具有仅由标识符组成的旧式参数列表:

int f(to)
double to; {
  return to;
}

所以基本上当它只看到一个标识符时,它必须假设这是一个变量名而不是一个类型.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐