C语言中的头文件只是简单的复制粘贴。
C语言中变量、函数、结构体的定义和声明两个过程是分离的。声明一般放在头文件中,为了防止重复声明,须要保证头文件中的内容在构建obj文件时只被包含一次。这能够经过#ifndef
宏定义和#pragma once
两种方式实现。函数
#ifndef
宏定义的方式:code
#ifndef SOME_UNIQUE_NAME_HERE #define SOME_UNIQUE_NAME_HERE // contents of the header ... #endif // SOME_UNIQUE_NAME_HERE
#pragma once
的方式编译器
#pragma once // contents of the header ...
两种方式的优缺点:编译
#pragma once
兼容性差,有些编译器并不支持这个宏命令。宏定义的方式能获得更普遍的支持。#pragma once
的方式只能控制整个代码文件只编译一次。#pragma once
的功能是宏定义功能的子集。#pragma once
语法更加简洁,可读性更好,而宏定义的方式须要写成三句话。