252 字
1 分钟
02头文件扫盲
头文件保护
使用#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++标准的一部分,可能失效这时候需要使用宏定义的方法。
宏定义方法的缺点:在项目文件数量多后,可能打错宏名称,或者不同头文件使用相同的宏名称,导致出错。