2013-03-26 44 views
3

最近,我所遇到的这包含的数据类型,如如何端口uint32_t的用C到Windows 7(32位)

uint32_t, uint32, uint64 etc. 

我可以在Windows 7(32位),而不使运行程序的程序任何变化? 我使用MingW的Code :: Blocks 10.05。

如果需要更改,哪些数据类型可以替换它们?

另外我想知道哪些标准的C定义uint32_t,uint32等? 它是所谓的gcc C?

回答

5

这些是从<stdint.h>,C99引入C标准头,我想。

如果您没有C99或兼容的头已经在你的系统,你真的应该有和真的应进行调查,则需要重新创建自己的定义。验证unsigned int确实你的编译器正好 32位之后

typedef unsigned int uint32_t; 

等,当然:

要做到这一点,你需要引入的typedef秒的一群。

但是这不应该是必要的,我想即使Visual Studio有足够的C99支持现在提供这个头。

+0

stdint.h确实是在C99中引入的,并且自此成为C标准的一部分。因此,根据OP请求来替换这些int类型是没有意义的 - 相反,各种非标准类型应该用stdint.h中的替换。 – Lundin 2013-03-26 15:29:22

+0

需要的类型定义可在https://code.google.com/p/msinttypes/ – Peter 2013-03-26 15:33:46

+1

找到。由于提问者正在使用mingw,对于标准类型来说'#include '不是更好,然后typedef非标准的'uint32'和'uint64',而不是typedef标准的'uint32_t'?如果稍后更改代码意味着无论如何都会包含''并且您的typedef冲突,也意味着您不必担心'unsigned int'的大小是否合适。 – 2013-03-26 15:46:59

相关问题