我是c的新手,我得到了一些其他人在Windows上编写的源代码.
尝试在linux上编译后我有错误,因为linux不支持DWORD,WORD和UINT32.我有6个文件例如.啊,Ac,Bh,Bc,Ch,Cc这些关键字都在所有文件中.
所以我在考虑两种可能的解决方案.哪个更好#define或typedef.
1)
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
Run Code Online (Sandbox Code Playgroud)
2)
#define DWORD unsigned long
#define WORD unsigned short
#define UINT32 unsigned int
Run Code Online (Sandbox Code Playgroud)
对于第二部分,我想知道我应该把这些声明放在哪里.他们应该进入头文件,还是应该进入源文件?
例如,我应该在头文件或源文件中执行类似的操作吗?
#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
Run Code Online (Sandbox Code Playgroud)
非常感谢上述建议,
kgi*_*kis 14
您自己找到了解决方案:
#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
Run Code Online (Sandbox Code Playgroud)
将它放在一个单独的头文件(typedefs.h)中,并从任何地方包含它.Typedef始终优于预处理器宏.
我的建议:不要使用DWORD,WORD或其他Win32类型.我通常更喜欢使用C99标准类型:uint_t,int_t或uint16_t,uint32_t