C++ 结构原型在单独的 header 文件中
C++ Struct prototyping in separate header file
我无法理解 an answer I saw in another post。它说在单独的 .h 文件中定义结构是一种很好的做法,这样它就可以在其他文件中使用。我认为这很好,它解决了我目前的困境,但我对编译和 makefile 有疑问。我目前只熟悉 header 个与 .cpp 文件关联的文件。
谁能解释一下当我有 .h 而没有 .cpp 时该实现的样子?我还需要一个实现文件吗?另外,如何在 makefile 中 link 和 header?目前我只知道如何将 .cpp & header 编译成 .o 文件和 link 它们。
谢谢,也很抱歉带我们回到 C++ 幼儿园。这是一个新的启示,看起来不错。
您不需要为每个 header .h 文件匹配源文件(.c 或 .cpp)。
有header个文件没有相应的源文件就好了。
当你 #include 一些 header 文件时,你可以将其视为一种 "copy and paste" 操作:预处理器复制文件的内容header 文件,并粘贴到包含点。
(好吧,这里有一些细节需要考虑,例如 #pragma once
指令或一些 #ifdef
包含保护可以防止 多个包含 相同的 header 给定项目中的文件。)
然后 C 和 C++ 编译器将处理整个 "compilation unit",即包含所有 header 的当前源文件。
关键概念是您 定义 .h
header 中的 struct/class,这样您就可以 在多个 .cpp
文件中使用 它。每当你需要 foo.h
中定义的 struct foo
时,你 #include "foo.h"
。您不需要直接编译 header 文件,它会被任何使用它的源文件拉入。因此,在正常情况下,您不需要 .h
的 make 目标。
如果 header 中的定义从未使用过,则不会被拉入,仅此而已。
我无法理解 an answer I saw in another post。它说在单独的 .h 文件中定义结构是一种很好的做法,这样它就可以在其他文件中使用。我认为这很好,它解决了我目前的困境,但我对编译和 makefile 有疑问。我目前只熟悉 header 个与 .cpp 文件关联的文件。
谁能解释一下当我有 .h 而没有 .cpp 时该实现的样子?我还需要一个实现文件吗?另外,如何在 makefile 中 link 和 header?目前我只知道如何将 .cpp & header 编译成 .o 文件和 link 它们。
谢谢,也很抱歉带我们回到 C++ 幼儿园。这是一个新的启示,看起来不错。
您不需要为每个 header .h 文件匹配源文件(.c 或 .cpp)。
有header个文件没有相应的源文件就好了。
当你 #include 一些 header 文件时,你可以将其视为一种 "copy and paste" 操作:预处理器复制文件的内容header 文件,并粘贴到包含点。
(好吧,这里有一些细节需要考虑,例如 #pragma once
指令或一些 #ifdef
包含保护可以防止 多个包含 相同的 header 给定项目中的文件。)
然后 C 和 C++ 编译器将处理整个 "compilation unit",即包含所有 header 的当前源文件。
关键概念是您 定义 .h
header 中的 struct/class,这样您就可以 在多个 .cpp
文件中使用 它。每当你需要 foo.h
中定义的 struct foo
时,你 #include "foo.h"
。您不需要直接编译 header 文件,它会被任何使用它的源文件拉入。因此,在正常情况下,您不需要 .h
的 make 目标。
如果 header 中的定义从未使用过,则不会被拉入,仅此而已。