问题标签 [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.
c++ - 命名包括警卫
C++ 包含守卫通常是如何命名的?我经常看到这个:
但是,我认为这不是很直观。如果没有看到文件名,就很难知道它的FOO_H
用途和它的名称所指的内容。
什么是最佳实践?
c++ - 除了包含保护之外,C++ 的有效用途还包括保护?
这个问题是讨论 C++ 命名约定的几个问题之一,包括警卫。问这个问题的人认为这个命名约定:
单独使用时有点不直观(这是什么FOO_H
意思?),我倾向于同意。
其他人则说,除非需要添加更多内容以更好地避免碰撞(PROJECTNAME_FOO_H_SDFFGH69876GF
如FOO_H
清楚它是一个包含守卫)。
如果拥有的唯一目的是FOO_H
防止多重包含,我可以购买它,但是我希望FOO_H
在文件的其他地方有条件吗?我认为条件编译将是一个很好的理由,在这种情况下,将其命名为类似的名称FOO_H_INCLUDED
会更清楚。
是否有类似的直接用途,或者我应该避免重新利用包含警卫?
c++ - 多个文件中的多个包含
我正在做一个小游戏。
在 BattleRecord.h 中:
在 Character.h 中:
在 BattleRecord.h 中:
这里的问题是,我的 Character.h 和 BattleRecord.h 需要相互包含,这肯定会导致多重重定义问题。因此,我在 Character.h 中使用前向声明添加:
问题已解决。但是,GUI.h 又需要 BattleRecord.h 来报告战斗,所以我必须将 BattleRecord.h 包含到 GUI.h 中。我还必须包含 Character.h 才能传递给 ViewStat 函数。我得到了错误并坚持到这个点。
c++ - 即使在命名空间之间,包含守卫也应该是唯一的吗?
我在两个命名空间中使用相同的类名,比如 A 和 B。在声明具有不同命名空间的类时,包含保护是否应该是唯一的?
我的意思是不能有两个文件名 AFile.h (在不同的目录中)具有相同的包含保护并声明不同的名称空间吗?
c++ - 有没有什么情况你不想包括警卫?
我知道为什么存在包含警卫,这#pragma once
不是标准的,因此不受所有编译器等的支持。
我的问题是不同的:
有什么合理的理由永远没有它们吗?我还没有遇到过这样一种情况,理论上,不在文件中提供包含保护,该文件应该包含在其他地方。有没有人举个例子,没有它们有实际好处?
我问的原因 - 对我来说,它们似乎是多余的,因为你总是使用它们,而且 的行为#pragma once
也可以自动应用于几乎所有的东西。
c++ - 内部和外部的编译指示之间的区别包括警卫?
#pragma once
将包含防护装置放置在内部与外部放置之间有什么区别吗?
情况1:
案例2:
我只是出于好奇想知道是否有任何特殊情况我应该更喜欢其中一种(案例 1 或案例 2),因为我决定在我的代码中结合两者(编译指示和标头保护)。
编辑:
我认为你们误解了我的问题......我问的是 的位置pragma once
,而不是 pragma once -vs- header guards。
iphone - gcc/xCode -- 如果文件不存在,#include 不会触发错误(或警告)?
这可能吗?
基本上,我想做的是这样的:
如果 header.h 不存在,编译器将继续其愉快的方式。
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.
c++ - 代码保护失败
拿这个文件:
啊
a.cpp
bh
b.cpp
主文件
这只是一个例子,但我真的有这个问题:
为什么以及如何解决?
c++ - 代码保护失败和来自字符串文字的模板
我知道将字符串文字作为模板参数传递的唯一方法是在之前声明它:
档案啊
文件 a.cpp
主文件
我得到了:
我不能声明EL
为外部,我想保留a.cpp
. 解决方案?