您的位置:首页 > 编程语言 > C语言/C++

c++的工程文件的编译顺序

2011-09-24 13:01 274 查看
以前一直以为,vs在编译c++文件时候是从头文件开始编译的,而每个头文件对应的源文件只是头文件定义中的一些实现而已,源文件不参与编译。
今天经过同学指点并实践之后才发现,其实不是这样的,从中受益颇多:

c++编译的时候实际上只编译源文件,而不编译头文件;编译源文件的时候实际上是 在#include <>或者#include " "的地方,把包含的头文件中的

代码直接拷贝到源文件中进行编译,如果没有#include一个头文件,则在这个头文件中随便写什么东西都可以如在test.h头文件中:

#include "../chang/chang01.h"

namespace changchang {

int a;

在test.cpp中:

#include <iostream>

//#include <test.h>

using namespace std;

void main()

{

}

在这里,如果在test.cpp中注释掉包含test.h的语句,则编译不会报错顺利通过,如果不注释掉,则因为包含头文件时候,在这行包含语句的地方会

把头文件中所有的东西拷贝到这里进行编译,而头文件中又是各种乱七八糟的不符合语法的东西,所以就会报错。

在这里学到的东西就是:

1. c++实际上是只编译源文件的

2. c++源文件中在包含头文件的地方,将被包含头文件中的代码全部拷贝进去进行编译;

3. 包含头文件是有顺序的,因为包含头文件的顺序意味着该头文件在源文件进行展开的顺序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: