C++取消已定义宏的方法
C++中,如果要取消之前已经定义好的宏,则可以使用#undef预处理指令来实现。要明确的一点是,这也是预处理指令,是在预处理阶段执行的指令,而非编译阶段,因此,#undef预处理指令的使用位置应该是在C++的函数之外,比如主函数main()之外。
C++ #undef语法
#undef 宏名称
提示:与宏的定义一样,#undef语句后面不添加“;”作为结尾。
#undef应用
我们可以尝试着思考一个问题,在程序中为什么要取消已定义的宏呢?现汇总了一些可能用到#undef预处理指令的地方,如下(仅供参考):
虽然可以直接使用#define预处理指令直接对已定义好的宏进行重新定义,但先使用#undef来取消宏定义不但是个好的编程习惯,而且可以(向程序员)清晰地表明程序设计的意图,提高代码的可读性和可维护性,当然了,也可以避免一些不必要的麻烦;
控制作用域,避免命名冲突:使用#undef预处理指令来取消某一个宏,就可以将该宏及其定义的内容的“作用域”限制在当前源文件或头文件内,比如该宏在当前文件中是某一个值,在另一个文件中则是另一个值;
用于取消辅助宏:在头文件中,有些宏只是临时的辅助宏而已,可以在头文件的末尾使用#undef来取消,避免其它包含该头文件的源文件中标识符上的冲突;
C++ #undef实例代码
如下实例代码,使用#undef取消了预定义的宏__FILE__,该宏包含当前源文件的路径和文件名,然后尝试在主函数内调用该宏,编译器会提示:undefining "__FILE__" [-Wbuiltin-macro-redefined]
#include <iostream>
using namespace std;
#undef __FILE__
int main(){
cout << __FILE__ << endl;
return 0;
}
免责声明:内容仅供参考,不保证正确性。 |