我有以下测试代码:
struct{
const int : 1;
const int b : 1;
} bit = {0};
int main(void) {
return bit.b;
}
大多数编译器,包括最新的 GCC,都可以很好地编译它,但是从版本 8 开始,Clang 抱怨匿名位字段上的“const”:
[source]:2:22: error: anonymous bit-field cannot have qualifiers
const int : 1;
“易失性”限定符也会发生同样的错误。 Clang 对限定符如此严格的原因是什么?有没有办法消除这个错误?
背景:我有自动生成的“硬件寄存器定义”头文件,它表示未使用的位和匿名位字段,并且诸如“易失性常量”或“易失性”之类的限定符系统地用于寄存器中的所有位。浏览此类文件并手动删除匿名字段上的限定符不是一种选择。