问题标签 [include-guards]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3598 浏览

c++ - 头文件包含循环和多重定义

我有一个util.h包含一个函数,它将用于a.h和'bh',以及更多,a.h并将b.h相互包含以访问彼此定义的一些类。

我的问题是,我得到multiple definitionfoo. 如何?

我认为问题可能是,a.h包括util.hb.h,并再次b.h包括,所以我得到了多个 def 错误。util.h但这似乎没有意义,因为util.h我写了#ifndef/#define守卫。

任何人都可以给我帮助,谢谢。

0 投票
2 回答
402 浏览

c++ - 包括守卫风格,C++

我有一个 .h 文件,其中包含几个类定义。我想在这个文件中使用 C++ 的包含防护;但是,我想知道哪种使用包含防护的方式被认为是正确/正确的?

一个守卫保护一切

或多个单独的警卫。

0 投票
1 回答
1492 浏览

c++ - 带有外部“C”的 C++ 导致重复符号错误

我正在尝试在头文件中为 c++ 类使用外部“C”函数。

当我编译时,我不断收到错误

我以为我有合适的警卫,但似乎无法弄清楚为什么会发生这种情况。任何帮助将非常感激。

这是头文件。

编辑:大卫很快指出,外部 GLHandler *currentInstance 修复了错误。

0 投票
4 回答
5764 浏览

objective-c - 包含和导入之间的区别

可能重复:
Objective-C 中的#import 和#include 有什么区别?

和有什么区别

0 投票
3 回答
5824 浏览

c++ - 我还应该使用#include 警卫和#pragma 一次吗?

在此处输入图像描述

http://en.wikipedia.org/wiki/Pragma_once
当所有这些编译器都支持时,我还应该使用包含防护#pragma once吗?
很多关于堆栈溢出的响应都说要同时使用两者以实现兼容性,但我不确定这是否仍然正确。今天的编译器不支持#pragma once什么?

我不确定使用这两种方法是否只是在被广泛采用之前的建议,或者是否仍然有很好的理由使用这两种方法。
仅在何时使用#pragma once会导致问题的任何示例?

0 投票
2 回答
3386 浏览

c++ - C++ 头文件重定义 (ws2ipdef.h)

我在我的项目中使用了很多包含(但每个头文件都使用像

现在我从 ws2ipdef.h 得到这个错误(自动包含在 windows.h 中):

在 Interface.h (包含在其他一些文件中)我使用:

我该如何解决这个问题或任何提示?

谢谢

0 投票
1 回答
1468 浏览

c - C - #include 和多个 typedef

我正在用 gcc 在 eclipse 中编写一个嵌入式 C 程序,但看不到如何解决某个问题。我在头文件中有一个 typedef,它受包含保护。由于我在多个头文件中使用此 typedef,因此我需要将其包含在其他头文件中,但是当我尝试编译时,无论我做什么,其中一个头文件都看不到 typedef 并抱怨未知类型名称。

我相信这说明了问题:

标题啊:

标题 bh:

标题通道:

这似乎总是导致错误“未知类型名称'USBD_Status'”,因为第二个编译的任何头文件都看不到typedef。从 ah 中删除包含保护会导致抱怨 USBD_Status 正在被重新声明。

编辑:我已经仔细检查了所有包含路径、所有包含、所有文件名和所有包含保护 - 没有重复或拼写错误。

0 投票
3 回答
29231 浏览

c++ - 为什么我的包含保护不能防止递归包含和多个符号定义?

关于include 守卫的两个常见问题:

  1. 第一个问题:

    为什么不包含保护我的头文件免受相互递归包含的保护?每次我写如下内容时,我都会不断收到关于不存在符号的错误,这些错误显然存在,甚至更奇怪的语法错误:

    “啊”

    “嗯”

    “主.cpp”

    为什么我在编译“main.cpp”时会出错?我需要做什么来解决我的问题?


  1. 第二个问题:

    为什么不包括防止多个定义的警卫?例如,当我的项目包含两个包含相同标头的文件时,有时链接器会抱怨某些符号被多次定义。例如:

    “标题.h”

    “source1.cpp”

    “source2.cpp”

    为什么会这样?我需要做什么来解决我的问题?

0 投票
3 回答
352 浏览

c++ - 使用 gnu coreutils 在 C++ 中查找包含警卫错别字

下面是一个 C++ 包含保护的错字。两者都应该阅读_MYFILE_H_

您如何建议使用 GNU coreutils(例如 grep、awk)在一堆头文件中搜索这样的错字?

0 投票
1 回答
78 浏览

c++ - #包括重复

上下文:我有一个类有两个include子句:

问题:两者都VarRecord.h包含Compressor.h同一个文件GlobalConstants.h,所以很明显编译器会抱怨。