c++中#if/#ifdef/#ifndef/#endif的使用

曾经接触过这个但没有深入,最近又见到了。

翻过了很多博客,结合书上看到的,总结来说主要有两个作用。

第一个,方便程序开发人员调试(debug),对于一个大程序来说,debug的痕迹到处都是我们又不能让客户看到,可以采用如下方式:

#ifdef DEBUG
cout << “测试成功” << endl;
#endif

如果你的程序#define了DEBUG,那么他就会显示。c++中#if/#ifdef/#ifndef/#endif的使用

上面的程序会输出"测试成功",当你调试成功时,只需要把上面的define隐掉就不显示了。

第二个,最主要的用途,为了防止头文件被重复引用,这里推荐一个老博客:https://blog.****.net/abc5382334/article/details/18052757。头文件重复会因此错误,比如说我一个程序文件(.cpp)中引用了a.h这个头文件,我目前这个程序引用了那个cpp文件,又声明了a.h这个头文件就会引起出错。所以在文件中加入#ifndef A_H (if not def a.h),#define A_H #endif,就能达到要求