问题标签 [ifndef]
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++ - 包括警卫和#ifndef #define 预处理语句
如果我执行以下操作:
dConst.hpp
genPower.hpp
对于任何使用生成器数组常量的代码,我最终都会遇到链接器错误。
#include "dConst.hpp"
但是,如果我用代码块切换:
有用...
我是不是在滥用权力#ifndef
?
ios - 测试目标中的用户定义构建设置?
我的单元测试中有以下代码:
SERVER_TEST 在我的测试目标的用户定义设置中的构建设置下定义。
当我运行测试时,#ifndef SERVER_TEST 总是返回 True。任何想法为什么?
谢谢?
c++ - 为什么“已经定义”?
请在这里给我一个提示:
我包括这两次并得到:
LNK2005 - 平台已在 .obj (MSVS13) 中定义。
您可以猜到,这个想法是只定义一次平台。为什么会#ifndef
或#define
失败?我应该如何解决这个问题?
c++ - 即使我使用了一次编译指示,C++ 错误 C2535
运行代码时出现奇怪的 C2535 错误。它由三个主要类组成(总结如下)。它们之间存在一些循环依赖关系,但它们前面有#pragma once
宏,不应多次创建。错误发生在行上:
它说:
错误 C2535: CVertex::CVertex(void) : 成员函数已定义或声明
这没有意义。它应该只被宣布一次,因为我正在使用#pragma once
警卫!我也尝试过使用ifndef
警卫,这没有任何区别。
这是代码的摘要(重要部分)
这是我的第二个文件:
我的第三个文件:
c - 包含另一个 .h 文件只能看到我的结构,而不是我的函数
所以为了简化,假设我有一个 Page.h 文件,其中包含以下内容......
Page.c 定义 printPage() 并具有...
而且,我还有另一对使用上述结构/函数的 .c/.h 文件。
在 Test.h 我...
,我的 Test.c 有
此时我可以使用我的 Page 结构,但是当我尝试使用 printPage() 时,我在尝试编译时收到“未定义对 'printPage()' 的引用”错误。
那么为什么我的 include 对结构起作用,而不是对函数起作用呢?如果有什么不同,我的 gcc 是 gcc(SUSE Linux) 4.6.2
c++ - 使用标头编程 C++ 时出错
这是我的代码,我试图创建自己的字符串类,但我被困在这里......我的老师不好:/好吧我有很多错误,但我想知道为什么这个错误出现“无效的预处理指令#ifndef_CADENA_H”
c++ - C++ #ifndef 令牌 #define 令牌
在某些情况下,我见过如下预处理器代码:
对我来说,似乎在这种情况下(我知道它在包裹自己以外的物品时使用(包括包括仍在回答的人的警卫)),在定义之前检查 TOKEN 是否已经定义是多余的它。如果我只是#define 它,没有检查,结果是一样的。
这有共同的原因吗?编译时间?保留块以供将来添加?
谢谢。
c++ - #ifndef 为什么要使用除类名之外的其他名称?
类声明通常如下所示:
我的问题是,为什么不使用类名而不是重新定义一个新的标识符:
我猜它与标识符冲突(相同的标识符可能出现两次)或命名空间的使用有关(我不知道是否可以在#ifndef 指令中使用像 std::array 这样的完整标识符)。
这将是一个更彻底的解释。
另外,使用命名空间时可以使用第二个测试吗?
c - 预处理器如何知道将 HEADER_H 转换为 header.h?
根据这个问题,您如何编写它似乎有一些灵活性 -
或者:
等等。它不是一成不变的。
但我不明白为什么我们一开始就使用下划线。为什么我不能只写:
那有什么问题?为什么我们到处都下划线并且大写?预处理器对下划线做了什么?
ios - 为什么当我将目标从 MyPTK 更改为 MyPTK 副本时 #ifndef MyPTK 正在执行
我有两个目标MyPTK和MyPTK 副本,MyPTK 副本是我从MyPTK复制的目标
但是当我使用MyPTK 复制执行应用程序时,控件会进入上面的代码,假设不是。我的意思是说控件不能进入那个块。
控制何时不会进入上述目标?
什么是实际行为,请解释。
当一个目标与另一个目标重复时,这些目标之间会有什么区别。
谢谢你。