在调试23年电赛E题时为了灵活的变动代码,于是使用了以下条件编译,发现条件编译对于调试来说是极其灵活多变而且很方便的,故写下此文章一备忘。
最开始的是普通的条件编译,如下:
这里通过定义不同宏来编译不同代码,使得整个系统调试起来更加地灵活。
但是由于我下面写了三种方法去调试,每个方法代码有将近一两百行,每次都要注释其他两个再去调试另一个太麻烦了,于是我选择了多条件编译,如下:
大概写法类似于:
#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
下面同时保留其条件编译的写法,供以后使用:
#if 常量表达式1
// ... some codes
#elif 常量表达式2
// ... other codes
#elif 常量表达式3
// ...
...
#else
// ... statement
#endif
#if constant a
...code1...
#else
#if constant b
...code 2...
#else
...code 3...
#endif
#endif
2024.6.7
由于需要使用逻辑条件编译,于是学习了一下:
实现如果A和B均未被定义,则执行C:
#if !defined(A) && defined(B)
//C代码
#endif
#ifndef A
#ifndef B
//C代码
#endif
#endif
2024.6.8