头文件的保护

头文件防止重复引用

#include指令的原理是复制一份文件到这个文件中,不可避免的,如果有多个头文件互相#include会导致重复声明的问题,所以需要一种方法来避免重复声明的问题。 在C++中有两种方式防止重复引用头文件 分别是:

#pragma once预编译指令

这个指令可以防止#include指令重复复制同一个头文件到最终文件中。 使用方法很简单,只需要在头文件的前面添加#pragma once

#pragma once

void Log(const char* message);
void InitLog();
struct Player {};

#ifndef指令

使用#ifndef指令判断一个标识符是否被声明,如果声明就不执行代码块中的代码。 这个防止重复引用的方法通常存在于老的代码中。

#ifndef _LOG_H
#define _LOG_H

void Log(const char* message);
void InitLog();
struct Player {};
#endif _LOG_H

#ifndef _LOG_H
// 因为上面已经定义了_LOG_H
// 所以下面的代码不会声明
#define _LOG_H
void Log(const char* message);
void InitLog();
struct Player {};
#endif _LOG_H