我在许多地方看到我们正在验证语句,如
# if defined(DATA ) || defined(__hpux) || defined(__sun)
我的疑问是:define
只有#defined DATA
的含义是什么意思并检查条件?
答案 0 :(得分:6)
这些定义用于有条件地编译代码。
如果你这样检查
#if defined(A)
#endif
然后用
定义它并不重要#define A
或
#define A 1
在这两种情况下都定义了宏,#ifdef A
或#if defined (A)
将导致TRUE
。
另一方面,如果您使用
进行测试#if A
#endif
如果TRUE
已定义且非零,您将获得A
,如果未定义FALSE
,您将获得A
。
这会导致潜在的陷阱。 您需要与在整个代码中使用宏的方式保持一致!
如果您打算启用/禁用定义宏0
或1
的功能,则需要检查第二个变体:
#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
这可能会造成一些混乱。
答案 1 :(得分:0)
单独“#defined var”没有逻辑效果。它表现得像一个声明。 它相当于有一行“i == 1;”,给定i先前已启动。
请确保下次您的问题清晰明确。祝你好运