在编写 C++ 代码时,如果在不同的.cpp文件中包含同一个.h文件,编译器在编译的时候会显示该.h文件中的变量被重复包含的错误。如何避免这种情况?——借助预处理指令。
方式1、ifndef...define...endif
#ifndef MY_HEADER_FILE_H
#define MY_HEADER_FILE_H
// 头文件内容
#endif // MY_HEADER_FILE_H
当头文件第一次被包含时,`MY_HEADER_FILE_H` 宏未定义,头文件的内容会被包含进来,同时宏会被定义。当头文件再次被包含时,由于宏已经定义,头文件的内容将被忽略。
方式2、Pragma Once
#Pragma Once
// 头文件内容
`#pragma once` 指令直接告诉编译器只包含一次该头文件。
对比ifndef...define...endif 和 Pragma Once
ifndef...define...endif | Pragma Once |
C++标准的预处理指令 | 非标准的预处理指令 |