我无法理解an answer I saw in another post。它说,最好在单独的.h文件中定义一个结构,以便它可以在其他文件中使用。我认为这很好,它解决了我目前的困境,但是我有一个关于编译和makefile的问题。我只熟悉目前与.cpp文件相关的头文件。
有人可以解释当我有.h和没有.cpp时该实现的样子吗?我还需要一个实现文件吗?另外,如何链接makefile中的标头?目前我只知道如何编译.cpp&标题到.o文件并链接它们。
谢谢,抱歉让我们回到c ++幼儿园。这是一个新的启示,看起来很好。
答案 0 :(得分:3)
您不需要为每个标头.h文件提供匹配的源文件(.c或.cpp)。
拥有没有相应源文件的头文件就可以了。
当您#include某些头文件时,您可以将其视为一种"复制并粘贴" 操作:预处理器复制头文件的内容,并且将其粘贴在包含点上
(嗯,这里有一些细节需要考虑,例如,#pragma once
指令或某些#ifdef
包含守护的存在可以防止同一个头文件中的多个包含给定项目。)
然后,C和C ++编译器将处理整个"编译单元",即包含所有包含标题的当前源文件。
答案 1 :(得分:2)
关键概念是你在.h
标题中定义结构/类,这样你就可以在多个.cpp
中使用它文件。只要您struct foo
中定义了foo.h
,就可以#include "foo.h"
。您不需要直接编译头文件,它将被任何源文件使用它拉入。因此,在正常情况下,您不需要.h
的制作目标。
如果从不使用标题中的定义,则不会将其拉入,就是这样。