
微软
long类型定义为32位,而GCC则将其定义为64位。其他编译器厂商的做法各有不同:有的全面跟随GCC,有的在Windows平台上遵循微软的标准,而在其他平台则采用GCC的规则。我个人更支持微软的选择。这是因为32位运行环境已经存在了相当长的时间,这一时期也正是软件快速发展的阶段。因此,大量现有软件默认long为32位。如果将其改为64位,可能会引发许多运行时问题。实际上,C++提供了intptr_t这种与指针长度一致的类型,而Windows API也提供了LONG_PTR。如果确实需要64位整数,可以使用int64_t。现代C/C++引入这些新类型,正表明编程时不应依赖于对int或long长度的假设。当然,将long定义为32位而非与指针等长,也可能导致部分软件从32位迁移到64位时出现问题。但这些问题绝大多数(超过90%)能够在编译阶段被发现,从而避免在运行时造成隐患。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号