为了账号安全,请及时绑定邮箱和手机立即绑定

使用C编译器,如何设置使得int字长与系统字长相同

使用C编译器,如何设置使得int字长与系统字长相同

千万里不及你 2019-04-16 17:06:04
比如在处理问题:“如何不使用sizeof()用C程序获得系统字长?”即便在64位机上,使用过的C编译器也会将int编译为32位。那么如何在C中设置,使得int编译字长和系统字长相同呢?
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

在Linux上用GCC编译,32位机的long是4字节,64位机的long是8字节。
在VS上搜索了一下宏INT_MAX的定义,貌似只有一处,是2147483647,所以应该没有办法设置了吧,只能自己定义一个类型了。
而且我了解到通常一些项目都不会直接使用默认类型,而是重新定义一组类型来使用,比如我就可以这样定义一组类型:
#ifdefm32
typedefintSpacelanInt;
typedeffloatSpacelanFloat;
#else
typedeflongintSpacelanInt;
typedefdoubleSpacelanFloat;
#endif
                            
查看完整回答
反对 回复 2019-04-16
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

你不能“设置”int的字长,这玩意儿本来就不是能设置的东西。
但大多数C的实现里long的字长等于机器字长,前提是你生成的是“nativebinary”,比如在64位系统里生成64位的程序。
另外,pointer/intptr_t/uintptr_t的字长一般也等于机器字长。
当然,在51之类的单片机上或者16位的古老系统里完全不是这么回事
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信