最近在程序设计实践课上重学C++,由于小组合作,自然就不是单纯的一个人写完代码写到一个文件里完事,所有最近接触了一下多文件编程的逻辑。

首先,多文件编程主要是为了组内合作,将一个项目分解成耦合度低的多个部分,使他们独立考虑,结合面向对象可以更好的分工明确,各自完成编码任务

C++文件大致会按后缀名分为两类:

  • .h文件:用于常量的声明,函数的声明部分,类的声明部分
  • .cpp文件:用于存放变量的声明,函数的定义部分,类的实现部分

(但是由于贪吃蛇还是比较简单,我并未做类的两部分分离)

由于面向对象的特殊性,很多地方存在多个类之间的相互依赖,由于这种原因,我们的头文件可能会出现重复引入

为了解决这个问题,一个常见的方式是利用ifndef和define来避免重复定义类之类的东西(clion采用这种方式让我比较深刻理解了各种define的意义,之前竞赛完全没有这样的意识)

另一个常见的方式是#pragma one,用这个编译指令,可以只控制引入文件一次,但由于这是一种编译指令,所以移植性很差,与这相同的还有_Pragma("once")这种写法

另一个重要的方面就是命名空间(namespace)。这东西是用来避免两个人的代码命名出现重合的,现在小项目不太用得起来,后续应该会尝试。