【发布时间】:2021-10-25 11:49:18
【问题描述】:
在我的代码中,我需要在[MIN, MAX] 范围内使变量uint32_t var 饱和。
MIN 和 MAX 被定义为宏,因此我可以在头文件中轻松更改这些值。
标题:
#define MIN (0)
#define MAX (1000)
代码:
if(var > MAX){
var = MAX;
}else if(var < MIN){
var = MIN;
}
当我现在使用编译器标志 -Wtype-limits 时,我收到一条警告,第二次检查 var < MIN 始终为假。此警告表明我可以删除第二个比较。
只要我定义了#define MIN (0),这就是有道理的,但是,当将其更改为#define MIN (10) 时,第二个比较是强制性的。
所以我的问题是:我如何告诉编译器 MIN 可以是大于或等于零的任何值?
【问题讨论】:
-
使用#UNDEF 符号?而不是编译器,而是生成翻译单元的 CPP……
标签: c limit compiler-warnings