随着程序的慢慢变大,单一文件必然不能满足我们的需求,一个普遍的做法是多文件编程,这样做的目的也是为了项目组织结构更加清晰,代码的可重用性变得更高。
一个多文件的例子
add.cpp:
int add(int x, int y)
{
return x + y;
}
main.cpp:
#include <iostream>
int main()
{
std::cout << "The sum of 3 and 4 is: " << add(3, 4) << std::endl;
return 0;
}
编译以上代码,你会发现程序并不会编译成功,并且会报出与上一节课相同的错误Use of undeclared identifier 'add'
,原因是:
解析器解析代码文件的时候,它不知道其他代码文件里面的任何东西,也不会记住任何以前编译过的代码文件的东西,在这种情况下,编译器不知道新文件里面的add()函数,也不记得以前编译过的add()函数,所以它给出的解释就是,它根本不知道add()是什么东西。
该怎么解决这个错误呢?
我们想让main.cpp文件知道add()函数是存在add.cpp文件的,为了能让main.cpp文件能够访问add()这个函数,我们需要使用前向声明:
#include <iostream>
int add(int x, int y); //我们需要让main.cpp知道add()是一个定义在某个地方的函数
int main()
{
std::cout << "The sum of 3 and 4 is: " << add(3, 4) << std::endl;
return 0;
}
值得注意的是:
不要在main.cpp里面#include "add.cpp"
,
这样做会导致解析器把add.cpp里面的内容直接插入到main.cpp里面,而不是把他们看作是独立的文件。
网友评论