我可以写入非 const 结构的 const 成员吗?
Can I write to a const member of a non-const struct?
此代码合法吗?:
#include <stdio.h>
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("a.x=%d\n", a.x);
}
Modyfing 用 const
限定符声明的对象调用 undefined behavior.
根据标准(强调我的):
C11 6.7.3/6 Type qualifiers
If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
type, the behavior is undefined.
此代码合法吗?:
#include <stdio.h>
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("a.x=%d\n", a.x);
}
Modyfing 用 const
限定符声明的对象调用 undefined behavior.
根据标准(强调我的):
C11 6.7.3/6 Type qualifiers
If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined.