相关疑难解决方法(0)

什么是严格别名规则?

当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?

c strict-aliasing undefined-behavior type-punning

778
推荐指数
10
解决办法
19万
查看次数

指向匿名联合的指针是否在C11中有效?

const Boo *constBoo;
Boo *nonConstBoo;

nonConstBoo = ((union {const Boo *_q; Boo *_nq;})constBoo)._nq;
Run Code Online (Sandbox Code Playgroud)

以上构造在C11中是有效的,还是只有GCC/clang扩展,您可以以这种方式将指针强制转换为匿名联合?如果它无效,是否有其他方法可以在有效的C11代码中编写等效表达式?

目的是模拟C++ const_cast,它将与C11兼容并提供一些基本类型的安全性.从const到非const指针的显式转换将使用-Wcast-qual选项触发警告,这是不合需要的.

c c11

7
推荐指数
1
解决办法
294
查看次数