编译器不会警告 C 数据或精度丢失

标签 c macos clang llvm compiler-warnings

即使指定了 -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/

相关文章:

macos - 在 Mac 应用程序中显示表情符号图标

c++ - AppleClang : Operator Overloading Compilation Error

macos - 尝试在 Mac 上安装 openMP/Clang

java - Macos镜像中appVeyor中AdoptOpenJDK 8.232的安装路径是什么?

c++ - 将 'WhatEver' 重新定义为不同类型的符号

Leetcode "Two Sums"的C解决方案有运行时错误

C中两个简单的字符计数程序的困惑

c - 使用指针将结构体数组传递给函数

c - 实现 HEAD 和 GET 请求,C 中的简单 Web 服务器

c++ - 如何使用 clang++ 链接到 boost in/usr/local 编译?