问题标签 [c-preprocessor]

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 投票
3 回答
6760 浏览

c# - 有没有办法在运行时设置#define 的值?

我想知道是否有办法在运行时设置#define 的值。

我假设在下面的代码中有针对特定于 Oracle 和特定于 Sql Server 的查询。

0 投票
10 回答
99440 浏览

c++ - 在 Visual Studio 中预处理后如何查看 C/C++ 源文件?

假设我有一个包含许多预处理器指令的源文件。预处理器完成后是否可以看到它的外观?

0 投票
5 回答
3337 浏览

python - 解析 C++ 预处理器 #if 语句

我有一个带有条件编译的 C/C++ 源文件。在将它交付给客户之前,我想删除大部分 #if 语句,这样我的客户就不必担心将正确的 -D 选项传递给编译器。

我已经在 Python 中实现并工作,但它只能正确处理 #ifdef 和 #ifndef 语句。我需要添加对#if 语句的支持,但#if 的语法要复杂得多。(例如,您可以使用 &&、||、!、括号、关系运算符、算术等)。

是否有任何现有的开源代码来解析和评估#if 语句?(最好在 Python 中)。

我知道的唯一实现是 GCC,这对于这项任务来说太复杂了。

0 投票
6 回答
6356 浏览

c++ - 当给定的宏/预处理器符号被声明时,如何知道(在 GCC 中)?

假设我在各种头文件中有#define foo。它可能会扩展到一些不同的事物。我想知道(在编译 .cc 文件时)遇到#define 时,它​​会扩展什么,它是哪个文件以及它是从哪里包含的。

是否可以?如果没有,是否有任何可能有帮助的部分解决方案?

随时添加带有澄清请求的评论。

编辑:当前的答案似乎集中在有一个#define 并且我只想跳到定义或知道定义是什么的情况上。这是简单的情况,是的,您的解决方案有效。但是当我在不同的文件中有相同的#define,并且想知道哪个是第一个启动时,这些技术都没有用。好的,我实际上使用#warning 仔细找到了正确的位置。但这需要做很多工作。

0 投票
5 回答
4056 浏览

c++ - 防止 C 预处理器执行特定的宏替换

如何告诉预处理器不要替换特定的宏?

具体问题如下: Windows 头文件定义 GetMessage 宏。

我的 API 的 C++ 头文件有一个 GetMessage 方法。我不想重命名我的方法。但是在 Windows 上使用 API 时,包括 windows.h 将我的 GetMessage 方法调用替换为 GetMessageA。

0 投票
4 回答
4534 浏览

c# - c#预处理器指令作用域

我正在寻找使用:

允许我在单元测试期间模拟可能不存在的硬件。使用#define语句的规则是什么?

即它的默认范围是什么?我可以更改指令的范围吗?

0 投票
7 回答
38184 浏览

c - C 预处理器宏是否可以包含预处理器指令?

我想做相当于以下的事情:

现在,#ifdef就我在函数宏中看到的而言,不允许使用或任何嵌套的预处理器指令。有任何想法吗?

更新:所以这似乎是不可能的。即使是在运行时检查的 hack 似乎也无法实现。所以我想我会选择类似的东西:

0 投票
13 回答
11059 浏览

c++ - #include 标头保护格式?

我知道这对项目没有什么影响,但是,假设您对 C++ 代码使用#defined 标头保护,您使用什么格式?例如假设一个名为foo.hpp

我对大写#defines 的想法很满意,但无法确定这些守卫的格式。

0 投票
7 回答
69769 浏览

c - 如何用 C 预处理器编写一个 while 循环?

我从教育/黑客的角度问这个问题,(我真的不想这样编码)。

是否可以仅使用C预处理器指令实现 while 循环。我知道宏不能递归扩展,那么这将如何实现?

0 投票
11 回答
25274 浏览

c - C 中宏定义 (#define) 的良好编程实践

例如,永远不要定义这样的宏:

当我们执行这样的操作时,这可能会很危险:

相反,这样定义是因为您不知道宏的用户如何使用它:

这个例子很简单,但这几乎解释了我的问题。在编写宏时,您会推荐任何一套指南或最佳实践吗?

谢谢你的时间!