当前位置:  开发笔记 > 编程语言 > 正文

是否有GCC预处理器指令来检查代码是否在64位机器上编译?

如何解决《是否有GCC预处理器指令来检查代码是否在64位机器上编译?》经验,为你挑选了2个好方法。

我正在尝试做类似以下的事情;

#ifdef 64-bit
    #define DECIMAL_FORMAT %ld
#else
    #define DECIMAL_FORMAT %d
#endif
.
intptr_t d;  
.
printf(“Some message with DECIMAL_FORMAT in the middle of it\n”, d);

'intptr_t'类型的变量'd'在32位机器上需要'%d'格式说明符,在64位机器上需要格式说明符'%ld'.我正在寻找一种解决方案,能够在32位机器和64位机器上编译代码,而无需更改GCC命令行或源代码.



1> Fred Larson..:

我认为__LP64__可能就是你想要的.见http://gcc.gnu.org/onlinedocs/gcc-4.1.2/cpp/Common-Predefined-Macros.html

但是,更好的方法是使用%p说明符来printf()而不是%ld或%d.那你甚至不必担心你的指针大小.



2> JesperE..:

您想要使用中PRI*定义的宏inttypes.h.您通过定义启用它们__STDC\_FORMAT\_MACROS.然后你可以使用

 intptr_t d = ... ;
 printf("This is an intptr_t: %" PRIxPTR "\n", d);

PRIxPTR宏将扩大到llx如果__WORDSIZE == 64,和lxx以其它方式.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有