我是c的新手,我已经给了一些源代码,别人写的是在
Windows上编译的.
在linux编译之后,我有错误,因为linux不支持DWORD,WORD和UINT32.我有6个文件例如. A.h,A.c,B.h,B.c,C.h,C.c.这些关键字在所有文件中.
所以我正在考虑2种可能的解决方案.哪个更好#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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。