即使指定了 -Wall
,Apple 的 LLVM 也不会警告此问题:
uint8_t tta;
typedef uint32_t TT;
TT ttb;
ttb= 0xdeadbeef;
tta = ttb;
// here tta is only 0xEF
如何强制编译器在赋值期间警告数据丢失?
最佳答案
如果您使用-Wconversion
,您会收到警告:
<stdin>:9:7: warning: implicit conversion loses integer precision: 'TT' (aka 'unsigned int') to 'uint8_t' (aka 'unsigned char') [-Wconversion]
tta = ttb;
~ ^~~
1 warning generated.
这是由 Apple 开发者工具的当前发行版生成的:
Apple LLVM version 8.1.0 (clang-802.0.42)
关于编译器不会警告 C 数据或精度丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46180702/