在iSeries (AS400)上,在开发人员环境中,当我编译C或c++程序时(在qsh下,使用gmake和ixlc/notCRTPGM
)
ixlc -c mySource.c
每次在源代码中使用<math.h>
时,弹出以下一系列警告:
/QIBM/include/math.h Line 000195浮点量"1.1754943508222875E-38F">
/QIBM/include/math.h Line 000208浮点文字"1.1754943508222875E-38F">
/QIBM/include/math.h Line 000217浮点文字"1.1754943508222875E-38F">
…
对应于从/QIBM/include/float.h中使用FLT_MIN
的任何行。
#define FLT_MIN 1.1754943508222875E-38F
但是我怎样才能避免这个充斥我的编译日志的警告消息呢?
头文件中FLT_MIN
的定义值有16位十进制数字。这太过分了。
本系统使用IEEE 754。所以单精度浮点值最多只能有7个十进制数字。(双精度值可以有15个)。编译器似乎知道,但不知道std
的源代码。
修复库中的代码。
以std
的其他实现为例,库中的代码应该是:
#define FLT_EPSILON 1.192093e-07
#define FLT_MIN 1.175494e-38
#define FLT_MAX 3.402823e+38
由于此ILE源代码在iSeries上受保护,因此可以选择将符号链接从/QIBM/include/float.h
重定向到您创建的另一个源代码。不一定是成员,但IFS文件应该可以完成这项工作。