如何正确地将 C 程序拆分为文件并包含?

2024-03-03

我组织了我的程序,将每个实体拆分在自己的文件中。 是这样的。

main.c

#include "student.h"
#include "subject.h"
#include "classroom.h"

#define PI 3.14
int sum(int a, int b);

学生.h

typedef struct st student;

学生.c

#include "student.h"

主题.h

typedef struct sb subject;

主题.c

#include "subject.h"

教室.h

typedef struct cr classroom;

课堂.c

#include "classroom.h"

我的问题是,里面课堂 I need student and subject。 我应该如何包含这个?我应该把这个包含在里面吗教室.h or 课堂.c?

#include "student.h"
#include "subject.h"

其次,我还有事情要做main.c被所有人使用,就像sum() and PI

在标头中包含实现或在实现文件中包含标头如何是正确的方法?我应该包含头文件还是实现文件?

如果我将所有内容都放在一个文件中,它编译得很好,但我没有正确执行此操作,它不会编译。


第一的。需要了解的一件事很重要.h(头)文件。他们应该具备以下条件。

// In the top of the file
#ifndef NAME_OF_FILE_H
#define NAME_OF_FILE_H

// Your header code goes here

// In the end of the file
#endif

为什么放这个?如果你要包含你的头文件,比如说header.h,在多个其他文件中,file1.c, file2.c,你基本上会重复代码,这意味着代码header.h在编译过程中将被放置在这两个文件中。

这些预处理器指令可以确保您的代码header.h在程序中只存在一次。

现在。你把#includes放在哪里?嗯,我假设学生.h主题.h文件将声明在中实现的内容学生.c and 主题.c文件。所以如果教室.h文件使用前两个标头中声明的内容,然后您需要放置#include "student.h" and #include "subject.h" in 教室.h.

如果只有课堂.c还使用标头中声明的内容,仅将包含放在此处而不是放在教室.h.

最后,如果两个文件都使用标头中声明的内容,则放置#include "student.h" and #include "subject.h"在两个文件中。

基本上,您将包含内容放置在需要在标头中定义(但未实现)资源的文件中。通过让您的标头被上面的代码包围,您基本上可以将包含内容放入许多文件中,并且在编译过程中永远不会有重复的代码。

有关sum() and PI。一样。使用上面的代码创建一个标头并将其包含在需要这些内容的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确地将 C 程序拆分为文件并包含? 的相关文章

随机推荐