1
13
答案是:
然后
创造
我是在……的帮助下找到的。 你们所有人 尤其是冬季静音。 谢谢! (使用GCC 4.3.3) |
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 · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 6 年前 |
user3623498 · 在#if中更改变量时出现问题 6 年前 |
einpoklum · 来自#cmakedefine替换的意外结果 7 年前 |
Joseph Franciscus · C中预处理器方法的别名++ 7 年前 |
stoper · 防止同一宏在多个转换单元中具有不同的定义 7 年前 |
СеÑгей · MinGW中预处理器g++的奇怪行为 7 年前 |