问题标签 [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.

0 投票
2 回答
511 浏览

c++ - 包括警卫和#ifndef #define 预处理语句

如果我执行以下操作:

dConst.hpp

genPower.hpp

对于任何使用生成器数组常量的代码,我最终都会遇到链接器错误。

#include "dConst.hpp"但是,如果我用代码块切换:

有用...

我是不是在滥用权力#ifndef

0 投票
1 回答
687 浏览

ios - 测试目标中的用户定义构建设置?

我的单元测试中有以下代码:

SERVER_TEST 在我的测试目标的用户定义设置中的构建设置下定义。

当我运行测试时,#ifndef SERVER_TEST 总是返回 True。任何想法为什么?

谢谢?

0 投票
1 回答
220 浏览

c++ - 为什么“已经定义”?

请在这里给我一个提示:

我包括这两次并得到:

LNK2005 - 平台已在 .obj (MSVS13) 中定义。

您可以猜到,这个想法是只定义一次平台。为什么会#ifndef#define失败?我应该如何解决这个问题?

0 投票
1 回答
799 浏览

c++ - 即使我使用了一次编译指示,C++ 错误 C2535

运行代码时出现奇怪的 C2535 错误。它由三个主要类组成(总结如下)。它们之间存在一些循环依赖关系,但它们前面有#pragma once宏,不应多次创建。错误发生在行上:

它说:

错误 C2535: CVertex::CVertex(void) : 成员函数已定义或声明

这没有意义。它应该只被宣布一次,因为我正在使用#pragma once警卫!我也尝试过使用ifndef警卫,这没有任何区别。

这是代码的摘要(重要部分)

这是我的第二个文件:

我的第三个文件:

0 投票
2 回答
85 浏览

c - 包含另一个 .h 文件只能看到我的结构,而不是我的函数

所以为了简化,假设我有一个 Page.h 文件,其中包含以下内容......

Page.c 定义 printPage() 并具有...

而且,我还有另一对使用上述结构/函数的 .c/.h 文件。

在 Test.h 我...

,我的 Test.c 有

此时我可以使用我的 Page 结构,但是当我尝试使用 printPage() 时,我在尝试编译时收到“未定义对 'printPage()' 的引用”错误。

那么为什么我的 include 对结构起作用,而不是对函数起作用呢?如果有什么不同,我的 gcc 是 gcc(SUSE Linux) 4.6.2

0 投票
1 回答
59 浏览

c++ - 使用标头编程 C++ 时出错

这是我的代码,我试图创建自己的字符串类,但我被困在这里......我的老师不好:/好吧我有很多错误,但我想知道为什么这个错误出现“无效的预处理指令#ifndef_CADENA_H”

0 投票
4 回答
1111 浏览

c++ - C++ #ifndef 令牌 #define 令牌

在某些情况下,我见过如下预处理器代码:

对我来说,似乎在这种情况下(我知道它在包裹自己以外的物品时使用(包括包括仍在回答的人的警卫)),在定义之前检查 TOKEN 是否已经定义是多余的它。如果我只是#define 它,没有检查,结果是一样的。

这有共同的原因吗?编译时间?保留块以供将来添加?

谢谢。

0 投票
1 回答
724 浏览

c++ - #ifndef 为什么要使用除类名之外的其他名称?

类声明通常如下所示:

我的问题是,为什么不使用类名而不是重新定义一个新的标识符:

我猜它与标识符冲突(相同的标识符可能出现两次)或命名空间的使用有关(我不知道是否可以在#ifndef 指令中使用像 std::array 这样的完整标识符)。

这将是一个更彻底的解释。

另外,使用命名空间时可以使用第二个测试吗?

0 投票
2 回答
296 浏览

c - 预处理器如何知道将 HEADER_H 转换为 header.h?

根据这个问题,您如何编写它似乎有一些灵活性 -

或者:

等等。它不是一成不变的。

但我不明白为什么我们一开始就使用下划线。为什么我不能只写:

那有什么问题?为什么我们到处都下划线并且大写?预处理器对下划线做了什么?

0 投票
1 回答
59 浏览

ios - 为什么当我将目标从 MyPTK 更改为 MyPTK 副本时 #ifndef MyPTK 正在执行

我有两个目标MyPTKMyPTK 副本MyPTK 副本是我从MyPTK复制的目标

但是当我使用MyPTK 复制执行应用程序时,控件会进入上面的代码,假设不是。我的意思是说控件不能进入那个块。

  1. 控制何时不会进入上述目标?

  2. 什么是实际行为,请解释。

  3. 当一个目标与另一个目标重复时,这些目标之间会有什么区别。

谢谢你。