我希望我的源代码在源代码级别而不是linux中的对象级别方面兼容32位和64位机器。
Q1)然后,我应该怎样照顾?我认为有一件事是,我需要处理指针转换的整数。 如果我使用" long int",它在32位机器上是32位长度,在64位机器上是64位长度?适当的方式是什么? 我想是否可以使用" long int"。
Q2)我的申请是否符合32位或64位的要求? 例如,使用构建参数?
答案 0 :(得分:0)
size_t
(与unsigned long int
相同的大小)和ssize_t
(与{{1相同的大小) }})。long int
,它将在32位机器上编译32位,在64位机器上编译64位。如果你运行gcc file.c
,它将编译为32位而不管你的机器如何,同样gcc -m32 file.c
将编译为64位而不管机器。您不需要做任何特殊的事情来编写可移植的C代码;在编写C代码时,你很少需要考虑架构。例如,无论您使用gcc -m64 file.c
还是gcc -m32 hello.c
进行编译,都可以正常运行:
gcc -m64 hello.c