最近在AIX上用xlc去编译一些程序,因为是64位,所以一般用long,包括日期,但一些数据是从数据库取出来的串,长度肯定32位是不够了,于是用atol将其转换,但是问题来了,得到的负值,也就是存储类型不够用了,但我明明是用的long啊,而且确定编出来的是64位,但看现象,明显就是得出的一个int型值!
后来man了一下,原来在AIX上这个函数要对应的头文件#include 没有引入,引入后OK!
还有一个问题就是做ascii字符向十六进制字符转换过程中,遇到了莫名的问题,总是出错!索性加入一些头文件
#include
#include
/*以下两个为新加*/
#include
#include
解决!
另,说明一下编译64位的参数吧,如果不在环境变量里做设置的话,cc -q64 或 -q32
否则可在环境变量设置
关于OBJECT_MODE环境变量:
The AIX operating system provides support for the OBJECT_MODE environment variable to enable the user to obtain a 64-bit development environment. AIX tools use the setting of OBJECT_MODE to determine the type of object to be used or created. The OBJECT_MODE environment variable has three recognized settings:
OBJECT_MODE=32 Works with 32-bit objects
OBJECT_MODE=64 Works with 64-bit objects
OBJECT_MODE=32_64 Works with either 32-bit or 64-bit objects
阅读(7844) | 评论(0) | 转发(0) |