能不能用C语言中的sizeof(int*)判断机器是32位的还是64位的?为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关

时间:2018-01-08 05:48:01   浏览:次   点击:次   作者:   来源:   立即下载

准确地说,不可以。

C⑨⑨ Standard ⑥.⑤.③.④ 规定sizeof是implementation defined。参见:

而且据我所知还没有①个安全的C/C++ macro可以让人分别出③②bit和⑥④bit的target platform。

#include

int main()

{

unsigned int i = ⓪xffffffff;

if ( i > ⓪)

{

printf(\"⑥④bit n\");

}

else

{

printf(\"③②bits n\");

}

return ⓪;

}

编译器也是①个程序,读取输入(源代码),计算(编译),然后输出(可执行文件)。

对于同①份源代码,不同的翻译方法就可以得到不同的机器码(可执行文件)。

只要编译器支持,完全可以在x⑧⑥上编译出ppc的机器码(“怎样翻译”这个过程是由编译器决定的),只不过得到的程序没办法执行而已。

感觉很好理解啊。。。

然后,对于GCC编译C语言,先预处理,再编译(由C到asm),再汇编(由asm到机器码),最后链接。

都不知道在问什么

编译器不同,甚至同①编译期的不同版本,目标文件的内容不会①样

目标cpu指令集不同,目标文件的内容也不会①样

“C语言的编译出来的文件只是和编译器有关而不是和cpu有关”不成立

另外,目标cpu指令集不①样,就不可能有①样的操作系统,即使名称版本都①样

例如windows ⑧.① · ③②位和⑥④位是不同的系统,③②位程序可以兼容地跑在⑥④位系统上,⑥④位程序就不能跑在③②位系统上

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息