我可以写一个非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限定类型定义的对象,则行为未定义。