GCC中使大转小类型转换更严格的编译标志有哪些?
GCC检测隐式窄化数值转换的编译标志
针对你提到的隐式将较大整数类型(如int转为short)转换为较小类型的场景,GCC提供了以下编译选项来触发警告或错误:
触发警告的选项
-Wconversion:会对所有可能导致数据丢失的隐式数值转换发出警告,包含int转short这类窄化转换、有符号与无符号类型间的隐式转换等场景。-Wsign-conversion:仅针对有符号与无符号类型之间的隐式转换发出警告,属于-Wconversion的子集,若只关注这类转换可单独使用。- 对于C代码,
-Wnarrowing专门检测列表初始化中的窄化转换(比如用int值初始化short变量的列表初始化写法),该选项在C11及以上标准下默认被-Wall包含,也可显式指定。
将警告升级为编译错误
如果希望直接阻止这类转换通过编译,可将指定警告转为错误,例如:
-Werror=conversion
该命令仅把-Wconversion对应的警告设为错误,不会影响其他类型警告的处理逻辑。
内容的提问来源于stack exchange,提问作者user17837290
相关产品推荐
相关产品推荐

