gpt4 book ai didi

c++ - #define DATA 10 和 # if Defined DATA 之间的区别

转载 作者:行者123 更新时间:2023-11-30 21:41:17 25 4
gpt4 key购买 nike

我在很多地方看到我们正在验证这样的声明

 # if defined(DATA ) || defined(__hpux) || defined(__sun)

我的疑问是:only define 是什么意思?喜欢 #defined DATA并检查情况?

最佳答案

这些定义用于有条件地编译代码。

如果你这样检查

#if defined(A)
#endif

那么你是否定义它并不重要

#define A

#define A 1

在这两种情况下都定义了宏并且 #ifdef A#if defined (A)将导致TRUE .

另一方面,如果您测试使用

#if A
#endif

然后你会得到TRUE如果A已定义且非零,您将得到 FALSE如果A未定义。

<小时/>

这会导致潜在的陷阱。您需要在整个代码中使用宏的方式保持一致!

如果您打算通过定义宏来启用/禁用某项功能 01您需要检查第二个变体:

#define A 0

#if A
.. enabled
#else
.. disabled <<<< We go here if A is defined as 0
#endif

如果您不小心查到#ifdef在一个地方,你会得到意想不到的结果:

#define A 0

#ifdef A
.. enabled <<<< We go here if A is 0 (and for any other value of A)!!
#else
.. disabled
#endif

这可能会导致一些困惑。

关于c++ - #define DATA 10 和 # if Defined DATA 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569198/

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