大家知道计算机使用的一系列的1和0
?
那个一个
C++语言程序又是如何从一个个.h和.cpp文件变成包含1和0的可执行文件呢?
?
?
?
?
?
可以认为有以下的几个阶段
?
源程序->预处理->编译和优化->生成目标文件->链接->可执行文件
?
?
?
1.预处理
?
C++的预处理是指在C++程序源代码被编译之前,由预处理器对C++程序源代码进行的处理。这个过程并不对程序的源代码进行解析。
?
这里的预处理器(preprocessor)是指真正的编译开始之前由编译器调用的一个独立程序。
?
?
?
预处理器主要负责以下的几处
?
1.宏的替换
?
2.删除注释
?
3.处理预处理指令,如#include,#ifdef
?
?
?
如我们有以下代码
?
temp.h
?
复制代码
#ifndef ? _HEADERNAME_H
#define ?_HEADERNAME_H ?1
?
#include
inline void show(char *a)
{
? ? std::cout << a<< std::endl;//annotation
}
?
#endif
复制代码
main.cpp
?
复制代码
#include "temp.h"
#define MACRO "This is a macro"
?
extern int i;
int main()
{
? ? ? ? std::cout<
? ? ? ? show(MACRO);