|
楼主 |
发表于 2008-12-29 08:52:00
|
显示全部楼层
以上的方法是不现实的!因为sizeof不能作为宏判断,只能作宏定义,具体说来是:
可用:
#define IS_LINUX64() (sizeof(long)==8)
却不能用:
#if sizeof(long)==8
要实现象
#ifdef __x86_64__
long tmp;
#else
long long tmp;
#endif
这样对变量定义是不行的
经过对include的翻查,最后确定gcc以__i386__来进行32位编码,而以__x86_64__来进行64位编码;64位的gentoo下stdio.h就是个简单例子(i不晓得其它的是不是?);而且在bits/wordsize.h中对这两个定义进行了综合,以__WORDSIZE的值来表示机器类型,大家可以直接去看看
整体看来,适当地翻翻include是必要的 |
|