二.C语言中多条件编译的灵活使用
在调试23年电赛E题时为了灵活的变动代码,于是使用了以下条件编译,发现条件编译对于调试来说是极其灵活多变而且很方便的,故写下此文章一备忘。
最开始的是普通的条件编译,如下:
这里通过定义不同宏来编译不同代码,使得整个系统调试起来更加地灵活。
但是由于我下面写了三种方法去调试,每个方法代码有将近一两百行,每次都要注释其他两个再去调试另一个太麻烦了,于是我选择了多条件编译,如下:
大概写法类似于:
1.#ifdef MACRO_A // 编译针对 MACRO_A 的代码 printf("MACRO_A is defined.\n"); #elif defined(MACRO_B) // 编译针对 MACRO_B 的代码 printf("MACRO_B is defined.\n"); #else // 如果两者都没有定义,就不编译任何代码 // 或者可以在这里编译默认情况下的代码 #endif
下面同时保留其条件编译的写法,供以后使用:
1. #if 常量表达式1 2. // ... some codes 3. #elif 常量表达式2 4. // ... other codes 5. #elif 常量表达式3 6. // ... 7. ... 8. #else 9. // ... statement 10. #endif
#if constant a
...code1...
#else
#if constant b
...code 2...
#else
...code 3...
#endif
#endif
由于需要使用逻辑条件编译,于是学习了一下:
实现如果A和B均未被定义,则执行C:
1. #if !defined(A) && defined(B) 2. //C代码 3. #endif
1.#ifndef A #ifndef B //C代码 #endif #endif