|
|
1
13
然后
我是在…的帮助下找到的 你们所有人 ,尤其是冬哑巴。
|
|
2
4
我认为你不能,这并非完全不合理,因为C预处理器的输出不应该产生未加引号的“#”,因为这将表示预处理器指令,而你不能像那样动态生成预处理器指令。 换句话说,C预处理器是C(和C++)的预处理器,而不是一个完全通用的工具。
使用其他宏处理器(
例如,使用宏替换:
然后对输出进行后处理,替换“!@“!”加上“#”。
(The
|
|
|
3
4
我通过直接运行它来测试它
使用gcc 4.0.1版本中的cpp。 我注意到的唯一问题是,我得到了一些额外的不需要的输出,即文件的前4行如下:
|
|
|
4
3
C中的字符串文字将被连接起来,所以你可以这样做
我认为没有字符串连接是不可能的(即没有像你想做的那样调用C编译器): 你可以用额外的间接层做一些花哨的事情,我甚至让预处理器通过以下方式生成所需的输出
我的建议是为这项工作选择合适的工具:如果你喜欢冒险,或者使用PHP或Perl等脚本语言,可以切换到另一种宏语言,如m4,甚至ML/I。 GPP |
|
|
5
1
尝试:
|
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 8 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 8 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 8 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 8 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 8 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 8 年前 |