gpt4 book ai didi

c - 为什么丢弃 const-qualification 不会导致任何警告?

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:38 26 4
gpt4 key购买 nike

struct istruct {
const int i;
};
const int i = 1;
struct istruct is = {1};

void *voidp_i = &i; // warning: discards 'const' qualifier
void *voidp_is = &is; // no warning

就所有意图和目的而言,struct istruct 似乎被解释为 const 限定类型。如果那是真的,那么最后一行也发出警告不是很有意义吗?

最佳答案

void *voidp_is = &is;

这里 &isstruct istruct * 类型,没有 const 限定符,只有成员 i常量。请注意,写入结构的 const 成员(例如 ((struct istruct *) voidp_is)->i=0;)将导致未定义的行为,因为您是修改 const int。 (C2011, 6.7.3/6)

void *voidp_i = &i;

在此示例中,&i 的类型为 int const * 并且 const 限定符在初始化时被丢弃。

关于c - 为什么丢弃 const-qualification 不会导致任何警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com