我可以写一个非const结构的const成员吗?
这段代码合法吗?:
#include typedef struct a_d{ int const x; } a_d; int a_d__ctor(a_d *X) { *(int*)&X->x = 42; //<-- legal or not? return 0; } int main() { a_d a; a_d__ctor(&a); printf("ax=%d\n", ax); }
使用const
限定符声明的对象调用未定义的行为 。
根据标准(强调我的):
C11 6.7.3 / 6 类型限定符
如果尝试通过使用具有非const限定类型的左值来修改使用const限定类型定义的对象,则行为未定义。