以下代码片段在一些较旧的编译器上添加
然而,这在较新的编译器版本中并不会发生。请查看GCC(10.x和11.x)和Clang(5.x,6.x)的矩阵,展示了它们之间的差异,链接在https://godbolt.org/z/KWeb8WTxz。
我有两个问题:
1. 为什么最近的编译器不会触发这个问题? 2. 是否有可能在最新版本的Clang或GCC中启用旧的行为?
-pedantic
和-Werror
时会产生编译错误。#include <cstdint>
#include <iostream>
int add(int a, int b){
return a + b;
}; // <-- stray semicolon
int main (){
return 0;
}
然而,这在较新的编译器版本中并不会发生。请查看GCC(10.x和11.x)和Clang(5.x,6.x)的矩阵,展示了它们之间的差异,链接在https://godbolt.org/z/KWeb8WTxz。
我有两个问题:
1. 为什么最近的编译器不会触发这个问题? 2. 是否有可能在最新版本的Clang或GCC中启用旧的行为?
-Wextra-semi
可以捕捉到这些问题。 - undefined-Wextra-semi
在C++方言选项中有所记录,而不是在更一般的请求或禁止警告消息的选项中。它被标记为“仅限C++,Objective C++”。 - undefined