gpt4 book ai didi

c++ - 您如何处理平台之间变化的整数的 native 大小?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:10 26 4
gpt4 key购买 nike

恐怕我已经知道了这个问题的答案,但我想确定...

我有一个相当大的项目,它有一个 typedef 原生类型的头文件:

typedef unsigned long int    u32;
typedef signed long int s32;
// etc...

不可避免的事情已经发生,我现在正尝试在 long 是 64 位而不是 32 位的系统上编译。修复它的最佳方法是什么?

我可以使用 int(或来自 stdint.h 的 int32_t/uint32_t)来 typedef满足我所知道的平台上的 32 位大小,但这似乎仍然值得怀疑。 printf 样式函数也存在问题,其中使用了 %ld(编译器提示并希望看到 %d)。这些都必须更改,不是吗(也许在 inttypes.h 中有定义)?

这看起来很简单,但我想在开始深入研究之前先确定一下(修复 printf 格式字符串似乎令人生畏)。

最佳答案

C 有 <stdint.h> , 在 C++0x 中是 <cstdint> .对于非 C++0x 编译器,你有 <boost/cstdint.hpp>如果你不介意依赖 Boost。 <inttypes.h> header 还包括 printf() 的宏格式说明符,可以是 adapted for use<cstdint>类型。如果你使用 C++,你应该使用 <iostream> ,因此无需担心类型化格式说明符。

关于c++ - 您如何处理平台之间变化的整数的 native 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com