本文将向您展示将程序划分为C中的组件部分或正确使用标头和源文件C++诀窍。
介绍
我主要是为我的一个朋友写这篇文章的。但是,如果我不与大家分享这一点,我会对社区造成伤害,所以就在这里。
我们将探索标头和源文件以及它们的作用。这些代码的大部分在 C 和 C++ 中都有效,但C++特定的代码将被标识为这样。
我会保持简短,并涵盖要点。
了解这个烂摊子
标头和源文件之间的关系起初可能会令人困惑。在几年前自学C和C++时,我努力理解这些关系以及在哪里使用它们。
部分原因是没有完全理解原型设计的必要性,也没有理解C或C++中的链接过程。我们将在这里讨论这个问题。
原型
在使用结构、变量或函数之前,必须声明它。对于函数,您可以并且通常应该在函数实现本身之前为函数提供原型。原型本质上只是函数签名,即返回类型、名称、参数和任何修饰符,如 or (C++)。staticconst
请考虑以下事项:
C++
int sum(int lhs, int rhs);
这是名为 的函数的函数原型。请注意,我们没有在它之后放置它,也没有在其中进行任何实现。相反,它以分号结尾,向编译器指示这是一个原型而不是函数本身。sum{}
声明原型后,您可以使用该函数,即使它稍后出现在文件中,甚至在单独的 C 或 C++ 源文件中。
没有标头
当您用于包含头文件时,编译器(技术上是预处理器)实际上将包含的内容复制到包含它的文件中,即指令出现的行。这发生在实际编译任何源代码之前。这在以后发生。#include#include
因此,编译过程本身没有标头。它们都已转换为C++源文件,标头直接复制到源文件本身中。