【发布时间】:2021-05-25 18:02:29
【问题描述】:
关于头文件中的变量声明,我遇到了与这两篇文章(First 和Second)中描述的相同的问题。列出的解决方案对我来说效果很好,但我对解决方案有一个基本问题:
为什么包含保护仍然不能解决这个问题?如果我多次包含同一个头文件,我希望包含保护可以避免我的变量被多次声明。
【问题讨论】:
-
假装你是预处理器。现在尝试自己用您的解决方案“预处理”一个玩具示例,看看会出现哪些问题。
-
include 保护避免在一个编译中包含多个。当您将单独的编译链接在一起时,您会得到重复的变量。
-
请edit您的问题并显示minimal reproducible example。链接问题的答案只能从错误消息中猜测您可能在头文件中有变量的定义(而不是声明)。不要描述部分代码,而是显示代码。复制并粘贴最小示例文件
a.c、a.h、b.c和b.h的内容、错误消息和警告,以及用于编译和链接代码的命令(如果可能)。 -
@Bodo 我没有特别的问题。正如我所说,我能够用链接的问题来解决它。我只是不太明白为什么包含警卫不能防止多重定义变量出现这种错误。我的问题只是为了澄清解决方案。
-
@drdolphin 您的问题不够清晰是因为您忽略了有关“此类错误”或“此问题”的详细信息。您写的是“要声明多次的变量”,而我猜您指的是如果变量被多次定义会出现的问题。添加示例代码将使这一点变得清晰,从而提高问题的质量。
标签: c include include-guards