在stdint.h头文件中,有如下声明
typedef int int32_t;
我看网上说这样就保证在不同的系统中,int32_t都是32位的类型了。
这个,我没明白...int32_t不是int型么..那假如在一个int大小是4字节的系统中,定义了int32_t 变量a,现在把源文件应用到另一个int大小是2字节的系统上,那int32_t的类型是int,大小不就变为2字节了么,也没起到还是4字节的作用啊...那变量a在新系统里还是4字节的,但它不再是int32_t类型了吧?
求大神给指点下
因为头文件中还包含了对这段代码进行预编译,会先判断int 为多少位,如果 sizeof(int) == 2,系统会让int32_t为4位的 如:
typedef long int32_t;
你可以找找这段代码或相似代码
而我找到的和你的不同
追问是在stdint.h头文件里么?我没找到您说的会先判断的代码..
您的意思是说,如果检测到系统的int大小是2字节的话,就会typedef long int32_t;保证在不同系统上int32_t都是4字节是吧?
另外,刚才您说的头文件中的判断代码,您能告诉我是在哪个头文件中么,谢谢了