0

我在一个文件中有这个宏定义(我们称之为 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 的内容时valueVAL_NOT_SET我得到:

value == -9999.900000
VAL_NOT_SET == 759.867067

但是,如果我将宏设置为 just -9999, not -9999.9,则没有问题,并VAL_NOT_SET保持其值。

此外,这是我试图从 AIX 机器转换到 Linux 的代码,在 AIX 上没有任何问题。有谁知道为什么宏会失去它的价值,但只有当它是float?

4

0 回答 0