非const对象的

时间:2015-05-20 06:11:12

标签: c gcc const language-lawyer

以下是否有效“GNU C”?

int foo;
const int bar __attribute__((__alias__("foo")));

换句话说,我可以为一个可变的对象提供const限定别名吗?其动机是避免仅在程序初始化时写入的对象的虚假重载,否则编译器障碍或内存障碍会导致编译器重新加载。

GCC不会针对上述内容发出任何警告或错误,但是当实际定义不是时,C明确禁止(在行为未定义的意义上)错误地声明extern对象const const,大概是因为这样做会导致有效的转换(省略重复加载)来改变程序的行为,并且使用别名似乎是一种欺骗和绕过正式UB同时允许的方式(在我的情况下) ,请求)完全相同的危险转变。

关于GCC是否支持此类使用,是否有任何官方消息?

0 个答案:

没有答案