用C写一个64位程序

clo*_*0rk -1 c 64-bit

这可能是一个非常愚蠢的问题:

  • 如何编写特别针对64位架构的程序.

我们正在开发Solaris系统.

32位和64位的代码本身有什么不同吗?或者它更像是头文件的问题?

任何人都可以给我一个64位的简单hello-username示例?

Jon*_*ler 6

这是一个64位程序:

#include <stdio.h>

int main(void)
{
    puts("Hello world!");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序作为32位程序也是安全的,并且作为16位程序也是安全的.根据编译的位数,程序中不一定有任何差别.

这是一个替代方案:

#include <limits.h>
#include <stdio.h>

int main(void)
{
    printf("%ld\n", LONG_MAX);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将为32位系统和64位Unix系统产生不同的答案,但16位系统和64位Windows系统将产生与32位系统相同的答案.

请注意,这两个程序都具有相同的源代码,并使用相同的标头,无论它们是针对32位还是64位(或者每个Grzegorz Szpetkowski注释为 16位或8位)进行编译.其中一个程序具有不同的行为,具体取决于平台(编译器)以及是否针对32位或64位模式进行编译; 另一个产生相同的输出.显然,LONG_MAX根据编译模式,从标题导出的值可能不同.