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了

posted @ 2023-10-24 22:24  Eachic  阅读(12)  评论(2编辑  收藏  举报