在前几天的一个面试中,有一个题目是
一个cpp文件能不能包含另外一个cpp文件,会有什么样的问题?
我看着题目,谁这么做啊,我没这么做过,肯定不知道这其中会出现的问题,当即答我不知道会出现什么问题,因为我也没试过
回来一查资料,用编译器一写,就会发现
多重定义了,相互冲突了
到网上查资料,分析
一个程序到编写代码到最冲呈现给用户的结果,就是编译-连接的过程
若有文件1.cpp,2.cpp 其中2.cpp中包含了1.cpp
从编译的角度来说,源文件都是编译各自的文件,2.cpp包含了1.cpp那么生成的目标文件2.obj也是包含了1.cpp的结果,而1.cpp编译产生1.obj,那么,当他们在链接的时候肯定会产生重复定义的错误
所以,一般源文件都会只包含系统的头文件和用户自定义的头文件,而用户自定义的头问津主要是定义一些结构体之类的。
那么,如果2.cpp需要调用1.cpp的函数呢
使用extern
//1.cpp
void func1()
{
}
void func1()
{
}
2.cpp
extern void func1();
extern void func2();
void min()
{
//调用1.cpp中的函数
}