问题标签 [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 回答
1497 浏览

c - C 和 Delphi 中的条件编译

下一个模式在 C 代码中很常见:

该模式在 Delphi 代码中也是可能的:

但这并不常见——我从来没有见过。如果 Delphi 代码需要条件定义,它只是定义它而不IFNDEF检查。

为什么这样?C和Delphi之间的条件编译有什么区别,因此ifndef前者需要检查而后者不需要检查?

0 投票
3 回答
531 浏览

c - 预处理器#ifndef

假设我有a.h以下内容:

假设我也有b.h其中还包括<stdbool.h>. 如果a.h其中有#ifndef预处理器定义语句并且b.h没有。将a.h仅包含未包含的内容b.h?那么当b.h包含时a.h,将a.h包含stddef.hstein.h不重新包含stdbool.h,还是那些预处理器定义函数仅用于查看整个类是否被重新定义,而不是其中的特定函数?

编辑:

此外,假设b.h包含另一个头文件,其中包含-stdbool.h使得该类和. 这会导致错误吗?b.hstdbool.ha.h

0 投票
2 回答
9863 浏览

c - 如何在 makefile 构建中启用“#ifndef/#endif”块?

我正在尝试在 MuPDF 中启用调试选项。出于某种原因,他们使用了我想使用的代码#ifndef NDEBUG并将其灰显。#endif我搜索了整个库,但找不到任何地方定义的 NDEBUG 痕迹。我已经设法通过添加标题来解决这个#undef NDEBUG问题,但我想知道是否有更非侵入性的方法可以做到这一点。

那么,你能从makefile中启用“#ifndef/#endif”块吗?

另外,你为什么要用#ifndef灰色的代码?不应该是#ifdef NDEBUG吗?

0 投票
4 回答
13850 浏览

c++ - C++ 尝试使用 #ifndef 和 #include 语句

好的,所以我是一名 HTML/Javascript/PHP 专业人士,但我正在尝试学习 C++。我还是个新手,我有一个 C++ 编程项目,但我有错误。

包含 int main() 的文件是“football.cpp”,我有三个必须使用的类的 .h 和 .cpp 文件:Game、Team 和 Date。每个 Team 实例都包含一个 Games 向量,每个 Game 包含一个 Date。Date 不包含任何其他类的实例。

我正在尝试找到一种在文件顶部使用 #include 和 #ifndef 语句的方法,以便在编译时不会出错,但我还没有找到有效的组合。我不确定是否还有其他错误。这是我当前的#include 部分,不包括其他库:

足球.cpp

团队.h

团队.cpp

游戏.h

游戏.cpp

日期.cpp

我使用 Cygwin g++ 编译器,我用来编译它的行是:

这是我得到的所有错误:(警告,文字墙)


如果需要进一步澄清,将进行编辑,尽管我认为不会。

任何帮助将不胜感激。

0 投票
1 回答
427 浏览

c++ - #ifndef 如何在不同文件中工作

所以我试图将我在 main.cpp 中声明的库包含到我的 header.h 中

这会检查我的 main.cpp 以查看 3 个库和命名空间是否存在相应的变量 HANOI_H?

0 投票
2 回答
2000 浏览

ios - ifndef,定义和直接分配常量

我只是在考虑以下方法之间的区别,同时定义常量:

方法1: 创建一个头文件来定义所有的常量,使用include guard:

然后将常量分配给函数:

方法2: 只需简单地定义常量

然后将常量分配给函数:

方法3: 不定义常量,给函数赋值即可:

以上有什么优缺点吗?

0 投票
1 回答
12774 浏览

bash - 使用 ifdef 和 ifndef 指令

我正在尝试检查是否使用 定义了变量ifndef/ifdef,但我不断收到not found执行错误。我正在使用GNU Make 3.81,这是我所拥有的片段:

以及确切的错误:

编辑

考虑到 Barmar 的评论,得出以下结论:

define 的内容是 shell 命令行,而不是 make 指令;要在定义块内的命令内换行,必须对换行符进行转义 -- 使用 \; 此外,与单行命令对应的每个块都是单独执行的,每个块在不同的 shell 执行中执行,这意味着如果打算访问下一个单行块中的变量值,定义局部变量将不起作用。

感谢 Tripleee 的出色工作。

0 投票
2 回答
5591 浏览

c++ - 错误:#if[n]def 需要一个标识符

最初我的代码是:

但是我遇到了一个错误#if[n]def expected an identifier。所以我玩弄它并意识到我的错误在2DO_H. 当我将代码更改为:

它在上述情况下有效,因为我2DO_H改为DO_H. 为什么当我在标识符前面有一个额外的数字时,会出现错误?

0 投票
2 回答
294 浏览

c++ - 使用 #ifndef 会破坏 node-gyp 模块

我正在使用and编写一个node.js模块,但是当我修复所有错误时,就像在这个问题中一样,其中包括通过添加来摆脱冗余声明C++node-gyp

到我的文件。然后我得到错误

但是当我删除它们时,一切正常,相反,我只会收到编译器警告,例如

我不明白为什么会这样,如果可能的话,我想摆脱编译器警告。有什么想法吗?

0 投票
1 回答
2903 浏览

c++ - 多个包含错误

我是 C++ 新手,正在尝试包含我制作的两个 .h 文件。包括相互访问,因此取决于我将它们包含在一个失败或另一个中的顺序。因此,我知道唯一可能的问题是当我去编译“$ g++ main.cpp foo1.cpp foo2.cpp”并且它无法读取一个。我使用#IFnDef 是因为我看到它在另一篇文章中解决了这个问题,但它对我没有任何改变。有任何想法吗?