gpt4 book ai didi

c - #if defined(WIN32) 和 #ifdef(WIN32) 的区别

转载 作者:太空狗 更新时间:2023-10-29 16:14:50 27 4
gpt4 key购买 nike

我正在编译将在 linux gcc 4.4.1 C99 上运行的程序。

我只是将我的#defines 放入以分隔将在 windows 或 linux 上编译的代码。但是,我收到了这个错误。

error: macro names must be identifiers.

使用这段代码

#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif

然而,当我改成这个时,错误被修复了:

#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif

我只是想知道为什么会出现该错误以及为什么 #defines 不同?

非常感谢,

最佳答案

如果您使用#ifdef 语法,请删除括号。

两者的区别在于#ifdef只能使用单一条件,
#if defined(NAME) 可以做复合条件。

例如你的情况:

#if defined(WIN32) && !defined(UNIX)
/* Do windows stuff */
#elif defined(UNIX) && !defined(WIN32)
/* Do linux stuff */
#else
/* Error, both can't be defined or undefined same time */
#endif

关于c - #if defined(WIN32) 和 #ifdef(WIN32) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1714245/

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