我是C的新手,我得到了一些其他人编写的在Windows上编译的源代码。
尝试在Linux上编译之后,我出现了错误,因为Linux不支持DWORD、Word和uint32。例如,我有6个文件。a.h,a.c,b.h,b.c,c.h,c.c.这些关键字都在所有文件中。
所以我在想两个可能的解决方案。哪个更好定义或类型定义。
(一)
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
2个)
#define DWORD unsigned long
#define WORD unsigned short
#define UINT32 unsigned int
在第二部分,我想知道我应该把这些声明放在哪里。它们应该放在头文件中,还是放在源文件中?
例如,我应该在头文件或源文件中执行类似的操作吗?
#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
非常感谢您的建议,
最佳答案
你自己找到了解决办法:
#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
把它放在一个单独的头文件(typedefs.h)中,并从任何地方包含它。typedef总是优先于预处理器宏。
我的建议是:不要使用DWORD、Word或其他win32类型。我通常更喜欢使用C99标准类型:uint、int或uint16、uint32