问题标签 [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.
c++ - 如何用#include 替换这个预处理器宏?
更新: 显然,您希望使用模板或基类而不是宏来执行此操作。不幸的是,由于各种原因,我不能使用模板或基类。
目前我正在使用宏在各种类上定义一堆字段和方法,如下所示:
FIELDS_AND_METHODS
是一个使用字符串化和标记粘贴运算符的多行宏。
我想用下面的东西代替它
这里我#define类的名称(以前是宏的参数),FieldsNMethods.h
文件包含原始宏的内容。但是,因为我是#include,所以在调试时我可以在运行时单步执行代码。
但是,我在“字符串化”和“标记粘贴”文件TYPE_NAME
中的预处理器符号时遇到了麻烦FieldsNMethods.h
。
例如,我想在 中定义类的析构函数FieldsNMethods.h
,所以这需要使用如下的值TYPE_NAME
:
但用TYPE_NAME
它的价值代替。
我正在尝试的可能吗?我不能直接使用字符串化和标记粘贴运算符,因为我不在宏定义中。
objective-c - 如何在 Xcode 中定义预处理器符号
是否可以通过在 Xcode 项目中设置属性来设置条件编译的符号?
我的目标是创建一个可用于所有文件的符号,而不必使用导入/包含,以便一组通用类在某些项目中具有特殊行为。如下所示,但带有我自己的符号。
c - 宏名称的有效字符是什么?
C 风格的宏名称是否遵循与标识符相同的命名规则?编译器升级后,它现在针对旧版应用程序发出此警告:
这行代码为 & 符号定义了一个 ASCII 值常量。
我假设这个定义(据我所知,实际上并没有被任何代码引用)是错误的,应该更改为“CHAR_AMPERSAND”之类的东西?
c++ - C 中的命名空间
有没有办法(ab)使用C预处理器来模拟C中的命名空间?
我在想一些事情:
这将被翻译成:
objective-c - C 预处理器的替代品
我有兴趣使用C预处理器以外的东西来预处理我的C和 Objective-C 源代码。有没有好的选择?
一个例子是允许一个人在C代码中间逃逸到 python 或 perl 片段中,并且片段吐出C,然后按正常方式编译。
c# - 条件编译取决于 C# 中的框架版本
是否有任何预处理器符号允许类似
或其他方式来做到这一点?
c - "#include" C 程序中的文本文件作为 char[]
有没有办法在编译时将整个文本文件作为字符串包含在 C 程序中?
就像是:
文件.txt:
/li>主.c:
/li>
获得一个在标准输出上打印的小程序“这是一个小文本文件”
目前我使用了一个 hackish python 脚本,但它很丑陋,并且仅限于一个变量名,你能告诉我另一种方法吗?
c# - 退出预处理器块时整数值更改
我有一段代码,其中似乎变量在预处理器代码块的末尾发生了变化。
在应该分配 20000 之后在调试器中执行此操作时,initialKeyCount = 19969。我已经玩了一点,发现在第一个预处理器块内分配给 initialKeyCount 是正确的,但是一旦代码离开第一个预处理器阻止值神奇地更改为 19969。
无论变量是在第一个预处理器块内部还是外部声明,此行为都是相同的。该值在第二个预处理器块内保持为 19969。
预处理器块中的分配是否在该块之外未定义?这似乎是错误的,但似乎就是这里发生的事情。
c# - 如何从 C# 中的预编译器获取当前日期时间?
在 C# 3.0 中,我有一个属性,它应该包含类的版本。版本号只是编译的日期和时间。现在,我有以下代码:
显然,这是错误的,因为这个属性返回给我当前的日期和时间。那么,预编译器是否可以在编译时打印DateTime?在这种情况下,我可以做类似下面的事情。
c++ - 这可能在宏中使用省略号吗?可以转成模板吗?
在实现了 CLogClass 以进行体面的日志记录之后,我还定义了宏,但它只适用于一个参数......
好吧,当使用超过 2 个参数调用时它会失败 :( ... 是否有可能避免它?可以以某种方式将其转换为模板吗?
编辑:可变参数宏是在 VS 2005 中引入的(但我目前在 VS 2003 中......)。有什么建议吗?