C语言基础:C语言宏定义(3) - 条件编译
上一节我们讲解了带参数和不带参数的宏定义, 这次我们来讲解条件编译, 什么是条件编译呢? 我们来看看吧
下面我们来看看例子:
#include <stdio.h> int main() { int a = 10; if (a == 10) { printf("a是10\n"); } else if(a == 5) { } else { } return 0; }
上面这种其实就是条件编译, 但这种条件编译有一个问题, 在编译的时候, 编译器不会选择性编译, 而是全部都编译进去, 再来判断条件, 下面我们来看看宏定义的条件编译:
#include <stdio.h> #define A 10 int main() { #if (A==10) printf("a是10\n"); #elif (A==5) printf("a是5\n"); #else printf("a是其他\n"); #endif return 0; }宏定义的条件编译只能用于宏定义, 不能用于变量, 而且, 一旦宏定义满足其中一个条件, 那么就只会编译这一句代码, 而其他的条件就不会参与编译, 还有就是在写完条件编译之后, 一定一定要加上#endif, 否则就和main函数少了一个大括号一样, 会出错.
其他的用法, 比如:
#if define A code; #endif意思是, 如果定义了这个宏, 那么就执行code.
#if !define A code; #endif意思是, 如果没有定义这个宏, 那么就执行code.
还有#ifdef和#ifndef和上面两种用法是一致, 这里就不多说了~~
好了, 这次我们就讲到这里, 下次我们继续~~~