问题标签 [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 投票
1 回答
324 浏览

c - 是否有预定义宏定义有关 armcc 中的字节顺序

是否有预定义宏定义有关 armcc 中的字节顺序。

我是 armcc 的新手。对不起我的英语。

在 gcc 中,这些是宏: __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ __ORDER_BIG_ENDIAN__ __ORDER_PDP_ENDIAN__ ...

现在我必须使用armcc,armcc是否也有类似的情况?

非常感谢。

顺便说一下,armcc 版本:

0 投票
1 回答
8453 浏览

c++ - __cplusplus < 201402L 在 gcc 中返回 true,即使我指定了 -std=c++14

指令:

命令行:g++ -Wall -Wextra -std=c++14 -c -o header.o header.hpp

我的 g++ 版本:g++ (tdm-1) 4.9.2

C++14 is required即使我添加了错误也会产生-std=c++14,我不知道为什么。

请告诉我如何解决这个问题。

0 投票
1 回答
4478 浏览

c++ - c ++定义函数使用#define宏来检查com结果

所以我正在开发一个 Windows 应用程序,我决定编写几个辅助函数来检查任何与 com 相关的函数在调用时返回的 HRESULT。我正在尝试将这些函数定义为宏#define 块,但我真的不确定什么是正确的语法。这是#define 块中的两个函数,当我的程序的其他部分调用它时,第二个函数会给出编译器错误。

基本上我的目标很简单。第一个函数检查 com 函数的返回码。如果不是 S_OK,则抛出错误。第二个尝试将错误代码转换为人类可读的字符串并返回。这是我得到的错误(我使用的 ide 是 qt creator,但这没关系): 在此处输入图像描述

它说 _com_error 被非法使用,我认为其他错误是由#define 块中的错误语法引起的。有人可以指出我的语法有什么问题吗?

0 投票
1 回答
306 浏览

c++ - 是否有一个 Visual c++ 预定义的预处理器宏,可以让您知道编译器何时优化

我希望能够使用 Visual c++ 编译器(vc12)做这样的事情:

但我找不到为此目的的预定义宏。

语境:

debug_mode 标志的用法如下:

问题在于,在调试实例中,我不断地单步执行失败并把我炸飞,因为奇怪的是,我单步执行代码比 CPU 通常要花费的时间要长得多:-)

如果在调试时有一些基础时钟暂停,那也可以解决我的问题。目前我正在使用对 std::chrono::high_res_clock::now() 的两次调用之间的差异。

编辑:

为了回应几条解释为什么我不想做我想做的事情的评论,我或许应该把这个问题简单地改写成:__optimize__cl 中是否有 gcc 的等价物?

0 投票
3 回答
2994 浏览

swift - #error in Swift(如何标记编译时错误)

什么是传统 c 风格#error关键字的快速替换?

当预定义失败时,我需要它来引发编译时错误:

0 投票
1 回答
595 浏览

c++ - 从编译传递的宏无法在eclipse中解析

我试图在编译时将定义的宏传递给我的程序,如下所示:

并编译g++ -DKEY_CNT=2 -O2 test_3.cpp -o test_3并按预期工作,但问题是 Eclipse 无法解析“KEY_CNT”。这只是一个玩具示例,在我的原始程序中,许多像红线这样的错误错误真的很烦人。

我认为 Eclipse 可能需要通知我的编译选项,以便它知道 'KEY_CNT' 已定义,所以我添加-DKEY_CNT=2Properties -> C/C++ Build -> Settings -> GCC C++ Compiler -> Miscellaneous,但它仍然不起作用。

有什么建议可以解决这个问题吗?

======== 已添加 ========

Eclipse 版本:面向 C/C++ 开发人员的 Eclipse IDE,Luna Service Release 2 (4.4.2)

0 投票
1 回答
1066 浏览

c++ - 当我不使用库时,为什么编译器会给我错误“未定义的外部符号”?

我有:frw_trafic.h:

这是一个声明了一个类和一个方法的命名空间。frw_traffic.cpp

方法 angleToProperRadians() 在 .h 中声明,在 .cpp 中定义,并使用在 .h 中定义的宏 PI 进行计算。然后,我使用 Car::transform() 方法计算对象在直线轨迹中的位置。它还在 .h 文件中声明为 Car 类的一部分,并在 .cpp 文件中定义。

此代码无法编译,给出“未解析的外部符号”。错误。AFA 这是一个链接错误,我相信宏或包含的东西搞砸了。我一直在拼命地尝试在 Stack Overflow 上使用有关此错误的其他问题,但是大多数人在使用外部库时遇到此错误。

请有人提供有关检查两次以查看此代码的真正问题的建议。

错误 LNK2019:在函数“public: void __thiscall FRW::Car::transform(int)”(?transform @汽车@FRW@@QAEXH@Z)

谢谢你。

0 投票
1 回答
773 浏览

c++ - 检查编译器是否为 Turbo C++

我目前正在处理为Turbo C++设计的遗留代码。为了解决 Turbo C++ 缺少bool数据类型的问题,该程序包含以下代码行。

大多数 C++ 编译器无法使用error: expected identifier before 'bool'. 虽然我很想切换到更新的编译器,但不幸的是,我需要维护此解决方法以实现向后兼容性。

我怎样才能表明这行特定的代码只能在 Turbo C++ 中编译?

0 投票
1 回答
806 浏览

lint - 有没有办法从 Keil 构建配置中导出预定义的宏?

语境:

我正在尝试使用 Keil 自动化嵌入式开发中的一些更平凡的任务。我的目标是在 Keil 项目中单击构建将运行一个预构建步骤,该步骤通过 Uncrustify(源代码美化器)运行所有代码,以确保它符合公司风格指南和帖子-build 步骤,然后通过 pc-lint(静态代码分析器)运行代码以突出显示它可能找到的任何潜在不安全代码。我编写了一个 PC 实用程序,它在 .uvproj 文件中搜索#define 宏、包含路径和文件路径,所有这些都是这两个工具所需的,然后修改构建前和构建后的用户命令以调用我的批处理文件将管理这两个步骤。uncrustify 部分工作正常, lint 部分正在产生一些明智的消息,

我的问题:

Lint 不断产生似乎与 Keil 编译器知道的宏相关的消息,但 Lint 不知道。我正试图找到一种方法来填补这个空白。我在 Keil 网站上找到了一个预定义宏表,这似乎是一个好的开始,但与其手动将它们复制到静态 .lnt 文件中,我想找到一种获取最新值的方法在项目建成时。这样,例如,每当开发人员更新他/她的 Keil 编译器时,都会更新“__ARMCC_VERSION”宏,而不是在我手动复制它时卡在某个时间点。

如果有人可以直接回答我的问题,我会很高兴,但如果有人对我可以尝试的更直接的替代方法提出可行的建议,我会同样高兴。非常感谢!

0 投票
0 回答
272 浏览

c++ - 这段代码是什么意思?“#define TO_LITERAL_(文本)#text”

当我搜索 的含义时__cplusplus,我发现了一段代码如下。

此代码根据其编译方式给出不同的输出。但我不太了解这两条粗线。

  1. 如果我将这两行合并为一行,为什么会出错:#define TO_LITERAL(text) #text
  2. 第二行的#text是什么意思?

太感谢了