C23标准下int main(){}与主流编译器编译行为的疑问
关于C23标准移除非原型函数后的编译行为疑问
int main(){}
即将发布的C23标准移除了非原型函数与K&R风格函数。我了解C23尚未正式发布,但GCC和Clang的当前编译行为令我困惑,具体编译场景如下:
- 使用GCC(主干版本)通过
-std=c2x -pedantic-errors -Wall -Wextra编译上述代码,无诊断信息; - 使用Clang 16.0.0通过相同参数编译,无诊断信息;
- 使用Clang 16.0.0仅通过
-pedantic-errors -Wall -Wextra编译,出现错误:
error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
我该如何理解这种现象?我能理解GCC因C23未正式发布尚未实现相关特性,但为何Clang在不指定-std=c2x时会触发该错误?
内容的提问来源于stack exchange,提问作者Lundin
相关产品推荐
相关产品推荐

