我在一个文件中有这个宏定义(我们称之为 file1.c):
#define VAL_NOT_SET -9999.9
在另一个文件中,我包含 file1,然后将不同的变量初始化为VAL_NOT_SET
:
decimal value;
value = VAL_NOT_SET;
稍后,我尝试比较这两个值:
if(value == VAL_NOT_SET){
...
}
但是那个 if 语句失败了。当我打印出 and 的内容时value
,VAL_NOT_SET
我得到:
value == -9999.900000
VAL_NOT_SET == 759.867067
但是,如果我将宏设置为 just -9999
, not -9999.9
,则没有问题,并VAL_NOT_SET
保持其值。
此外,这是我试图从 AIX 机器转换到 Linux 的代码,在 AIX 上没有任何问题。有谁知道为什么宏会失去它的价值,但只有当它是float
?