有了#ifdef 为什么还需要#if defined

Posted 悄然拔尖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有了#ifdef 为什么还需要#if defined相关的知识,希望对你有一定的参考价值。

有了#ifdef 为什么还需要#if  defined ?

#include <stdio.h>
#define A 
#define B 
void test(int a,int b)
{
    
    
}

int main(void)
{
    #if 0
#ifdef A&&B
    test(printf("a\\n"),printf("b\\n"));
#endif
    #endif

#if  defined(A)&&defined(B)
    test(printf("a\\n"),printf("b\\n"));
#endif

    return 0;
}

#if 0 注释掉之后:

 

 可见,#ifdef虽然我们最常见也用得最多,可是#if defined(XXX)却可以有 &&,||,!,逻辑与,逻辑或,逻辑非等操作,而#ifdef却不支持这样的特性。

以上是关于有了#ifdef 为什么还需要#if defined的主要内容,如果未能解决你的问题,请参考以下文章

ifdef 中的布尔值:“#ifdef A && B”是不是与“#if defined(A) && defined(B)”相同?

C语言中#if,#if defined ,#ifdef,extern的用法描述

#ifdef vs #if defined 的差异

#ifdef vs #if defined 的差异

#ifdef vs #if defined 的差异

条件编译#ifdef的妙用详解