如何在不同的机器上保持C变量类型的固定大小?

Ale*_*lex 4 c c++

我有这些功能.

ssize_t fuc1(int var1, void *buf, size_t count);
int func2(char *charPtr, int mode, int dev);
short func3( long var2);
Run Code Online (Sandbox Code Playgroud)

问题是当在不同的机器(64位和32位)上编译时,C中的数据类型具有不同的大小.即使是void*也是如此.出于某些原因.我需要确保每台机器(64位和32位)的这些尺寸都相同.那么,我应该如何修改这些呢?

Pav*_*aev 12

使用C99,<stdint.h>和其他int32_t类型.关于维基百科的更多细节.

对于指针类型,没有办法做到这一点,因为根据定义,它们是特定于平台的.没有有效的用例,您可能需要它们保持一致,因为它们不可序列化.如果使用指针变量来存储指针其他数据(例如,取决于某些标志),请使用某种精确整数类型与指针类型的并集.或者,使用C99 uintptr_t,并在需要对其进行处理时转换为指针.