10 C++中的头文件
1. 用途
头文件的用途不仅是声明,以供你在多个cpp文件中使用
C++基础中,头文件传统上是用来声明某些函数类型,以便可以用于整个程序中使用。 可复习: 06 How the C++ Compiler Works 07 How the C++ Linker Works.md^
2. pragma
#pragma
是一个preprocessor command(预处理)
因此它其实是一个header guard(头文件保护符),防止我们把头文件多次include到一个单一translation unit(见AST,翻译单元)
即你可能会有很多个头文件,如果没有header guard,很有可能在一个.cpp文件同时include这两个头文件时导致重复定义
exp:
3. 另一种保护符
#ifndef _LOG_H // if _LOG_H is not defined
#define _LOG_H
void InitLog();
void Log(const char* messsge);
#endif
过去主流,现在还是用#pragma once
4. include补充
inculde " "
为相对路径,若在当前文件上一目录,则可为 "../"
。
include < >
则是文件必须在所有include目录中的某一个,不过现在引号也可以了,即include "iostream"
可以正常工作。
为什么iostream没有拓展名
写标准库的人决定的,为了区分C Standard Library Header files和C++ Standard Library Header files
C | C++ |
---|---|
.h拓展名,如stdlib.h | 无,如iostream |