我是c语言的新手,有些人给了我一些其他人编写的在windows上编译的源代码。
尝试在 linux 上编译后出现错误,因为 linux 不支持 DWORD、WORD 和 UINT32。例如我有6个文件。 A.h、A.c、B.h、B.c、C.h、C.c。这些关键字存在于所有文件中。
所以我正在考虑两种可能的解决方案。 #define 和 typedef 哪个更好。
1)
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_t、int_t 或 uint16_t、uint32_t
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)