C语言#if、##ifdef、#ifndef的用法详解,C语言条件编译详解

1. #if 用法

 #if 整型常量表达式1
    程序段1
#elif 整型常量表达式2
    程序段2
#elif 整型常量表达式3
    程序段3
#else
    程序段4
#endif

#if、#elif、#el## 标题se 和 #endif 都是预处理命令,这些操作都是在预处理阶段完成的,多余的代码以及所有的宏都不会参与编译,不仅保证了代码的正确性,还减小了编译后文件的体积。
这种能够根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译。条件编译是预处理程序的功能,不是编译器的功能。

2. #ifdef

`#ifdef  宏名
    程序段1
#else
    程序段2
#endif`

如果当前的宏已被定义过,则对“程序段1”进行编译,否则对“程序段2”进行编译。

3.#ifndef

#ifndef 宏名
    程序段1 
#else 
    程序段2 
#endif

与 #ifdef 相比,仅仅是将 #ifdef 改为了 #ifndef。它的意思是,如果当前的宏未被定义,则对“程序段1”进行编译,否则对“程序段2”进行编译,这与 #ifdef 的功能正好相反。

4.三者之间的区别

if 后面跟的是“整型常量表达式”,而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。

参考文档和更详细的解释见:
http://c.biancheng.net/view/1986.html

猜你喜欢

转载自blog.csdn.net/woshisunyizhen/article/details/110440439