有没有办法让输入双关语在C和C++中都有效?优选地,低开销,并避免琐碎的预处理器破解。在C89中,我知道我可以这样做: return *(unsigned int *)#然而,这违反了C99严格的别名规则针对C和C++给出的典型解决方案如下所示:
unsigned int float_bits(float num)
#include <stdio.h>
int a = -1; long c = *(long*)&b; // expect `c` to alsoreturn 0;
} 上面的代码是否根据严格的别名规则产生未定义的行为?:What is the strict aliasing rule? 上面的代码即使在编译器优化的情况下也能正常运行。使用memcpy和复制内存内容是唯一的选择吗?