C-使用.h文件

用户名

我正在学习C以进行作业分配。使我困惑的一件事是头文件。我试图找到一些有关我的问题的信息,但无济于事。

我的问题是,说我有3个不同的.c文件。约定是(至少来自阅读源)-每个.c文件都有其自己的.h文件,例如parser.c具有parser.h,lexer.c具有lexer.h,typechecker.c具有typechecker.h(如果我们正在编译器)。

然后,我们继续添加一条语句:

#include "parser.h"
#include "typechecker.h" 

在lexer.c文件中,并与其他.c文件相同(更改我们包含的头文件)。

除了使用该约定外,还可以将所有3个文件的所有原型添加到一个标头(例如header.h)中,并将其包括在所有3个类中吗?问题在于这3个类将具有已经包含在该类中的函数原型,但是我不认为这是一个问题(我是C语言的初学者,所以我可能是错的)。

谢谢。

不称职的

您建议的内容是允许的,但不建议使用。将所有原型都放在一个标头中,将使您在编译和构建上花费很多。尝试专注于“为什么使用头文件?”。如果您得到此答案,您将避免将所有内容添加到一个头文件中。头文件旨在实现模块化,从而仅向源文件提供其所需的那些信息。其次,在大型项目中,您必须定义“私有”头文件,这些头文件在代码内部使用,并且对于外部单词不可见。当然,您将为其他用户提供头文件以使用您的代码。因此,即使在您开始学习时也不建议放置所有原型。首先,每个源文件制作一个头文件。

编辑

如果您的header1.h具有函数function1(),则在使用function1()的任何地方(所有源文件),都将添加header1.h

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Linux上使用OpenGL编译C ++程序时,错误:'GL / glfw3.h:无此类文件或目录

.h文件在C中的异常使用

如何使用C ++和Window.h解析EXE文件并从IMAGE_DOS_HEADER结构获取数据?

添加使用swift类的目标c类来桥接头文件Projectname_swift.h

使用MacOS Mojave的Code :: Blocks C ++编译:致命错误:sys / cdefs.h:没有这样的文件或目录

C如何显示所有未使用的功能(包括在h文件中定义的功能)

使用regex和'find'命令查找* .cpp,*。hpp,*。c和* h文件

如何使用nanopb和protobuf将nanopb .proto文件编译为.h和.c文件(`protoc`编译问题)

在CPP文件中使用IMPLICIT实例化而不是.H来为类成员函数放置C ++模板定义?

Python.h:使用CLion将python实现为c ++时,没有这样的文件或目录

如何在不使用GCC中的limit.h头文件的情况下编译C程序?

混合.c和.h文件

如何使用命令行在C ++中编译和链接分隔的.h和.cpp文件?

什么是命令行,将2个文件编译为使用C语言中math.h库的单个exe

在.h文件中使用数组

在C中使用dirent.h读取和选择文件

在Linux中使用Makefile包含math.h时无法编译C源文件

如何强制cppstyle使用c和h文件?

Bash脚本使用sed将df -h可用磁盘空间与aria2c文件大小进行比较

链接.c和.h文件

使用“.h”文件中的结构

使用 MacOS Mojave 编译 C++:致命错误:mpi.h:没有这样的文件或目录

在 C++ 中的另一个 .h 文件中使用类中的方法

如何使用 Pybind11 从现有的 C++ 包(包括 .dll、.h 文件)创建 Python 扩展?

如何使用 Python.h 和 MinGW 在 Windows 10 上编译调用 Python 方法的 C 文件

不能在 .h 文件 C++ 中使用 glGenBuffers

如何使用 c# 将任何以 <H> 开头的文本文件数据的特定句子加粗?

使用 protobuf-c 生成 pb.c/pb.h 文件,结构中没有匿名成员

使用 C 编辑文件