如何通过C preprocessor生成带#开头注释的窗口管理器配置文件?
可行!这里有两种优雅的方法实现你的需求
你想要用C预处理器生成以#开头的注释行,替代当前#ident输出的问题,完全可以实现,下面是两种实用方案:
方案一:宏替换ident为空(推荐)
这个方法既保留了用#ident标记注释的习惯,又能输出你想要的# 注释内容格式:
- 在你的配置源文件开头添加宏定义:
#define ident
(注意ident后面有一个空格,确保替换后#ident变成# )
- 然后像之前一样写注释:
#ident this is a comment #ident another comment for your window manager
- 用cpp处理时加上
-P(去掉默认生成的行号/文件信息)和-w(屏蔽无效预处理器指令的警告):
cpp -P -w your_config.in > your_config.cfg
处理后的输出会变成:
# this is a comment # another comment for your window manager
原理很简单:预处理器先把ident替换为空字符串,#ident就变成了# ,后面跟着你的注释内容。cpp会把这一行识别为无效的预处理器指令,但加上-w后不会弹出警告,同时会原样输出整行内容。
方案二:直接写目标注释行(简单直接)
如果你不想用宏,也可以直接在源文件里写你最终想要的注释行:
# this is a comment
然后同样用cpp -P -w处理,cpp会把这一行当作无效指令,直接输出到结果文件中。不过这种方法会让源文件本身在未处理时就包含“无效”的预处理器指令,用编辑器打开可能会有语法高亮错误,所以方案一更推荐。
内容的提问来源于stack exchange,提问作者gboffi
相关产品推荐
相关产品推荐

