gpt4 book ai didi

在 windows 和 linux 上编译

转载 作者:太空狗 更新时间:2023-10-29 16:46:32 26 4
gpt4 key购买 nike

我是 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

关于在 windows 和 linux 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com