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选项触发警告,这是不合需要的.