多文件编程

随着程序的慢慢变大,单一文件必然不能满足我们的需求,一个普遍的做法是多文件编程,这样做的目的也是为了项目组织结构更加清晰,代码的可重用性变得更高。

一个多文件的例子

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里面,而不是把他们看作是独立的文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 转自http://blog.csdn.net/navyhu/article/details/47023317理解链...
    扎Zn了老Fe阅读 1,479评论 0 0
  • 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是...
    Charls丶阅读 761评论 0 0
  • 这是介绍" 富花的小白兔之梦"名字由来的故事。 一、“富花”是这样产生的 那是上世纪80年代的时候,在西北地区一个...
    写作积累阅读 307评论 2 1