【发布时间】:2010-11-26 01:47:33
【问题描述】:
我需要以下帮助:
预处理器宏标签(x)应输出“#x”,例如,
#define label(x) ...
如果我调用 label(aname),输出应为“#aname”(不带引号)
我知道,以下尝试是错误的。
#define label(x) #x // leads to "x"
#define label(x) \#x // is \"x"
#define label(x) "#x" // is "#x" (but not the content of x") "#otto"
它可能存在一种转义的#(磅),但我不知道,如何转义...
编辑:我运行“gcc -E test -o test.html”来获取输出。关键是:如何仅使用预处理器的功能打印带有 makro 的井号 (#)?
【问题讨论】:
-
请问你想做什么?
-
g 是的。我将使用预处理器“创建” html 代码;) label(x) 将用于创建指向锚点的链接,例如,... 我减少了问题的复杂性。
-
您希望此 HTML 代码作为字符串,在 C 程序中使用,还是作为实际的 HTML 代码,直接进入浏览器?
-
在这种情况下,我可以建议 C 预处理器不适合这项工作吗?它不是一个强大的文本处理器。它是为 C 语言设计的,并且在该语言中运行良好,但如果您尝试将其用于其他许多方面,则效果会很差。你要打一场艰苦的战斗才能让它做事。这是一个很好的例子——我什至不确定你是否可以在这里做你想做的事。
-
如果您想使用 C 预处理器生成 Haskell 未装箱的元组,这实际上非常有用,这些元组会被哈希破坏。
标签: c c-preprocessor