c++学习记录1
#undef 和 #define
在c中#define
命令还可以定义宏和常量,但是在c++中已经有更好的办法如内联函数和const方法
但是,#define
命令也不是毫无用处的,它可定义一个空字符,就只是单纯的定义这个量,表明这个量是处于被定义的状态
其实读到这里我是很懵的,要继续往后读才能发现原来c++中#define
是要和#ifdef
一起食用才行。#undef
就是消除#define
定义的字符
#define eachic
#undef eachic
#ifdef
用法
#ifdef text_1//标识符
//program
#endif
//如果标识符未被定义,则编译program,反之则不编译program
在一个main函数中往往会包含多个头文件,而头文件中又会包含其他头文件,有可能会发生头文件被包含多次,导致一个类被编译多次,导致编译错误。但是如果我们在文件前先预处理定义一个与文件名相同字符名,再在定义之前使用#ifdef
判断该字符串是否被定义,这样就可以保证这个文件只会编译一次
示例:
//main.cpp
#include <iostream>
#include "text_1.cpp"
#include "text_2.cpp"
int main(){
//此处省略一万行
}
//text_1.cpp
#ifdef TEXT_1
#define TEXT_1
#include "helloworld.cpp"
//your program
#endif
//text_2.cpp
#ifdef TEXT_2
#define TEXT_2
#include "helloworld.cpp"
//your program
#endif
//helloworld.cpp
#ifdef HELLOWORLD.cpp
//your program
#endif
这样就不会出bug了