问题标签 [predefined-macro]

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 投票
0 回答
605 浏览

c++ - 查看头文件时制作 Visual Studio 2017 IDE #define __cplusplus

我正在使用 Visual Studio 2017 来处理包含 C 和 C++ 文件的嵌入式项目,并且我对所有内容都使用了 C++ 编译器。

在 IDE 中查看头文件时,未定义预定义符号 __cplusplus。这会影响 Intellisense 语法突出显示,并可能导致由红色波浪下划线指示的虚假错误以及代码块被错误地灰显为不活动。

在查看头文件以便定义 __cplusplus 时,如何告诉 IDE 我正在使用 C++ 编译器?

0 投票
1 回答
158 浏览

c - 对 __LINE__ 指令的一致性有任何保证吗?

GCC 9 最近__LINE__在某些情况下改变了指令的行为。下面的程序说明了这种变化:

因为宏expand()(扩展为__LINE__)跨越多行,GCC 最高 8.3(和 Clang 最高 8.0)考虑扩展的最后一行的编号,打印5。但 GCC 9 考虑第一行,并打印 4。

(Godbolt 链接:https ://godbolt.org/z/3Nk2al )

C11 标准对 的确切行为不是很精确__LINE__,除了:

6.10.8 预定义的宏名称

以下小节中列出的预定义宏的值(__FILE__和除外__LINE__)在整个翻译单元中保持不变。

(...)

6.8.10.1 强制宏

以下宏名称应由实现定义:

(...)

__LINE__当前源代码行(一个整数常量)的假定行号(在当前源文件中)。

我假设这意味着确切的值是实现定义的,因此不能期望它的值在不同的编译器版本或不同的编译器中保持不变。或者在标准的其他地方是否有一些关于这种效果的论据?

例如,是否有人会争辩说,只要源本身没有改变,当前源行的假定行号就应该是稳定的?

0 投票
1 回答
365 浏览

c++ - C++ 中的实际构建日期

我需要获取模块的构建日期。我用__DATE__宏。但看起来如果包含此宏的文件没有更改,那么它不会被编译并且构建日期会旧且不正确。如何确保构建日期更新?也许还有另一种方法可以获取模块的构建日期?

0 投票
1 回答
153 浏览

c - 预定义的宏在 C 中的什么位置?

我想知道预定义的宏在哪里定义和驻留?

预定义的宏是在编译器或预处理器中定义的,它有一个字典来保存源代码中的预定义宏。

我的意思是__FILE__宏在编译器中具有定义和等效值,并且已经在编译器中进行了定义,这是真的吗?

0 投票
1 回答
53 浏览

c++ - 关于rgb数值比较的混淆

我编写了一个程序,它可以提供任何 RGB 值,并且可以从程序中找到相似的颜色。但结果有点令人困惑。程序有点长,主要是填写一些RGB数据。主要要点如下

结果是:

该程序的结果大致符合我的预期,但其中有一些非常令人困惑的地方。

例如,这里我明确指定了三个条件必须同时为真,然后才将其添加到列表中。

但从输出来看,似乎程序只比较了第一个条件。

0 投票
1 回答
82 浏览

c++ - 如何实现这样的c++宏

很难描述意图,这通常意味着我预定义了一个宏 idebug 来保存一些代码。如果预定义了_DEBUG 标志,则打印输出。或者假装什么都没发生。

如果我们使用函数来实现它,它将如下所示:

假设有一个程序

当我们处于调试阶段时,我们需要编译器的输出:

如果我们处于发布阶段,我们需要编译器的输出: