252 字
1 分钟
02头文件扫盲
2025-01-07

头文件保护#

使用#define可以保护头文件.h, 被多次include,避免重复声明的问题。

头文件:

#ifndef HEADFILE_H
#define HEADFILE_H
// 声明类
class MyClass{
public:
int num;
void my_function();
};

源文件:

#include "headfile.h"
#include "headfile.h"
#include <iostream>
// 定义
int MyClass::num = 0;
void MyClass::my_function(){
std::cout << "hello!" << std::endl;
}
#include "headfile.h"
// 使用
int main(){
MyClass a = new MyClass();
a.my_function();
}
  • 头文件只包含声明
  • 源文件包含实现
  • 使用头文件保护来防止头文件被重复包含

pragma once#

一种非标准的被广泛支持的预处理指令,用于代替头文件宏定义保护的功能。在大多数现代编译器中都可以使用,在一些老旧的编译器中无法使用。

缺点:不是C++标准的一部分,可能失效这时候需要使用宏定义的方法。

宏定义方法的缺点:在项目文件数量多后,可能打错宏名称,或者不同头文件使用相同的宏名称,导致出错。

02头文件扫盲
https://chrisnake11.github.io/blog/posts/coding/c基础/02头文件扫盲/
作者
Zheyv
发布于
2025-01-07
许可协议
CC BY-NC-SA 4.0