如何修复AS400 (C程序)编译时的警告消息?



在iSeries (AS400)上,在开发人员环境中,当我编译C或c++程序时(在qsh下,使用gmakeixlc/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文件应该可以完成这项工作。

相关内容

  • 没有找到相关文章

最新更新