#include "SomeFile.h"是否等价于把SomeFile.h插入到#include处
飞驰的青蛙 2007-01-16 02:17:49 我不太理解C++编译器怎样处理#include "SomeFile.h"
在ASP中 #include "SomeFile"会原封不动的把SomeFile中的文本插入到#include处。
在C++中假如有这么几个文件:
a.h
a.cpp
b.h
b.cpp
main.cpp
假如b.h包含a.h
main.cpp包含a.h、 b.h则会出现编译错误说:对象重复定义。如此看上去好像在#include 文件时就像是原封不动的把文件插入到#include处。
我试着这么做过,把main.cpp中#include "a.h" #include "b.h"都删去。先不管b.h和b.cpp,把a.h的所有内容复制到main.cpp中,这样在a.h和main.cpp中都有对class a的定义,main.cpp中声明class a的对象,
class a 中有个内联函数 a::f(){_ss=3;},调试运行时发现,main.cpp中调用的是a.h中的函数,对它本身内的定义视而不见。
#include到底做了什么?