以独立于实现的方式获取指向4字节对象的指针

bob*_*obo 1 c++ portability

当我意识到假设一个int将是一个指向长度为4个字节的指针时,我可能没有完全安全地进行编程.

因为C++的基本类型的某些方面(例如int的大小)是实现定义的.

如果您正在处理具有32位有符号整数样本的某些内容(例如波形),该怎么办?您将字节指针转换为(int*)并一次处理一个样本.

我只是很好奇获取4字节指针的"安全方式"是什么,如果未来某个时候MSVC委员会决定int现在是8个字节,那就不会停止工作.

有关

GMa*_*ckG 7

stdint.h你的编译器可能有一个C99标头.它定义类型,如uint32_t无符号的32位整数.

从C++ 11开始,您的编译器需要具有此标头.你应该包括它#include <cstdint>.

如果没有,请查看Boost Integer,它将此标题模仿为<boost/cstdint.hpp>.


对于将指针存储为整数,请使用intptr_t在同一标头中定义的.