问题标签 [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 投票
9 回答
16143 浏览

c++ - 命名包括警卫

C++ 包含守卫通常是如何命名的?我经常看到这个:

但是,我认为这不是很直观。如果没有看到文件名,就很难知道它的FOO_H用途和它的名称所指的内容。

什么是最佳实践?

0 投票
5 回答
480 浏览

c++ - 除了包含保护之外,C++ 的有效用途还包括保护?

这个问题是讨论 C++ 命名约定的几个问题之一,包括警卫。问这个问题的人认为这个命名约定:

单独使用时有点不直观(这是什么FOO_H意思?),我倾向于同意。

其他人则说,除非需要添加更多内容以更好地避免碰撞(PROJECTNAME_FOO_H_SDFFGH69876GFFOO_H清楚它是一个包含守卫)。

如果拥有的唯一目的是FOO_H防止多重包含,我可以购买它,但是我希望FOO_H在文件的其他地方有条件吗?我认为条件编译将是一个很好的理由,在这种情况下,将其命名为类似的名称FOO_H_INCLUDED会更清楚。

是否有类似的直接用途,或者我应该避免重新利用包含警卫?

0 投票
5 回答
2109 浏览

c++ - 多个文件中的多个包含

我正在做一个小游戏。

在 BattleRecord.h 中:

在 Character.h 中:

在 BattleRecord.h 中:

这里的问题是,我的 Character.h 和 BattleRecord.h 需要相互包含,这肯定会导致多重重定义问题。因此,我在 Character.h 中使用前向声明添加:

问题已解决。但是,GUI.h 又需要 BattleRecord.h 来报告战斗,所以我必须将 BattleRecord.h 包含到 GUI.h 中。我还必须包含 Character.h 才能传递给 ViewStat 函数。我得到了错误并坚持到这个点。

0 投票
4 回答
1138 浏览

c++ - 即使在命名空间之间,包含守卫也应该是唯一的吗?

我在两个命名空间中使用相同的类名,比如 A 和 B。在声明具有不同命名空间的类时,包含保护是否应该是唯一的?

我的意思是不能有两个文件名 AFile.h (在不同的目录中)具有相同的包含保护并声明不同的名称空间吗?


0 投票
6 回答
971 浏览

c++ - 有没有什么情况你不想包括警卫?

我知道为什么存在包含警卫,这#pragma once不是标准的,因此不受所有编译器等的支持。

我的问题是不同的:

有什么合理的理由永远没有它们吗?我还没有遇到过这样一种情况,理论上,不在文件中提供包含保护,该文件应该包含在其他地方。有没有人举个例子,没有它们有实际好处?

我问的原因 - 对我来说,它们似乎是多余的,因为你总是使用它们,而且 的行为#pragma once也可以自动应用于几乎所有的东西。

0 投票
3 回答
2570 浏览

c++ - 内部和外部的编译指示之间的区别包括警卫?

#pragma once将包含防护装置放置在内部与外部放置之间有什么区别吗?

情况1:

案例2:

我只是出于好奇想知道是否有任何特殊情况我应该更喜欢其中一种(案例 1 或案例 2),因为我决定在我的代码中结合两者(编译指示和标头保护)。

编辑:

我认为你们误解了我的问题......我问的是 的位置pragma once,而不是 pragma once -vs- header guards。

0 投票
1 回答
76 浏览

iphone - gcc/xCode -- 如果文件不存在,#include 不会触发错误(或警告)?

这可能吗?

基本上,我想做的是这样的:

如果 header.h 不存在,编译器将继续其愉快的方式。

0 投票
4 回答
3070 浏览

c++ - When not to use include guard in header file?

We all know when to use include guard, but when shall we not use it in our project?

Recently, I saw a project with mix compilation (CUDA + GCC), one header file (CUDA file) is deliberately left without include guard. I am just curious about it.

0 投票
1 回答
201 浏览

c++ - 代码保护失败

拿这个文件:

a.cpp

bh

b.cpp

主文件

这只是一个例子,但我真的有这个问题:

为什么以及如何解决?

0 投票
2 回答
157 浏览

c++ - 代码保护失败和来自字符串文字的模板

我知道将字符串文字作为模板参数传递的唯一方法是在之前声明它:

档案啊

文件 a.cpp

主文件

我得到了:

我不能声明EL为外部,我想保留a.cpp. 解决方案?