首页 > 编程笔记 > C语言笔记 阅读:11

C语言#ifdef和#ifndef条件编译的用法(附带实例)

在 #if 条件编译命令中,需要判断符号常量所定义的具体值。但有时并不需要判断具体值,只需要知道这个符号常量是否被定义了,这时可以采用另一种条件编译的方法,即 #ifdef 与 #ifndef 命令,分别表示“如果有定义”及“如果无定义”。

#ifdef 的一般形式如下:
#ifdef 宏替换名
    语句段
#endif
含义是:如果宏替换名已被定义过,则对语句段进行编译;如果未定义 #ifdef 后面的宏替换名,则不对语句段进行编译。

#ifdef 可与 #else 连用,形式如下:
#ifdef 宏替换名
    语句段 1
#else
    语句段 2
#endif
含义是:如果宏替换名已被定义过,则对语句段 1 进行编译;如果未定义 #ifdef 后面的宏替换名,则对语句段 2 进行编译。

#ifndef 的用法恰好和 #ifdef 相反,并且它也可以和 #else 连用。

【实例】模拟银行叫号服务。去银行办理业务时,需要先取号,如号码为 100 号,则需等到叫 100 号时才可以办理业务;如果没有取号,则不能办理业务。使用 #ifdef 和 #ifndef 编写程序,模拟此场景。
#include<stdio.h>
#define STR "100 号"    /*定义宏常量*/

int main()
{
    #ifdef STR
        printf(STR);    /*输出叫号信息*/
        printf("能办理业务\n");
    #endif
    printf("\n");
    #ifndef ABC
        printf("没取号码,表示没被定义");
    #endif
    printf("没取到号不能办理业务\n");
    return 0;
}
程序运行结果为:

100 号能办理业务

没取号码,表示没被定义没取到号不能办理业务

相关文章