存档

文章标签 ‘C++,编译’

头文件是如何参与编译的

2012年12月24日  3,221 views 3 条评论

最近在看C语言的编译与链接的内部实现,这是比较基础的内容,但是又往往很容易被忽视,因为各种IDE尤其是VS的强大集成功能将编译和链接的实现给隐藏了。

至于编译与链接的具体过程并非本文内容,本文实际要讲的是我在自学时发现的一个有趣内容,头文件的编译参与问题。

有些文章说过头文件不参与编译,其实严格来说头文件是参与编译的。

在预编译源文件的时候,凡是遇到#include<XX>的时候,就会把XX的文本内容全部复制到相应的位置。

然后被编译的源文件其实是 【头文件文本内容】+【源文件文本内容】

这有点宏定义的感觉~

所以,下面这段代码是真的可以用的!

abc.h

 1,2,3

main.cpp

#include <iostream>
#include <string>

int main()
{
    int a[] = {
        #include "abc.h"
    };

    for (int i = 0;i< 3;i++)
    {
        std::cout<<a[i]<<std::endl;
    }

return 0;
}

头文件编译

分类: 心得笔记 标签: