我正在尝试强制gnu-cpp保留特殊注释,例如/ * + ... /因为我需要它们用于优化提示。它适用于xlc(AIX)的cpp,但是现在我在斜杠和加号(/ )之间得到了一个额外的空间?
e.g:
$ cat cpp-test.sql
#define _STAR *
#define OPT_HINT(x) /_STAR+ x _STAR/
select OPT_HINT(INDEX(TABLE table_pk)) * from table
$ /usr/bin/cpp -E < cpp-test.sql
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "<stdin>"
select / *+ INDEX(TABLE table_pk) */ * from table
$
我希望从表中获取“select / * + INDEX(TABLE table_pk)* / *。”
有什么建议吗?
祝你好运
德克
答案 0 :(得分:2)
您可以使用##预处理程序运算符将标记粘贴在一起:
#define F foo
#define B bar
F##B
产生
foobar
但请注意,cpp旨在成为C(和C ++)预处理器 - 它不应该是一个通用工具。如果您真的想要做这种事情,请看一下替代宏处理器,例如m4。
另请注意,构建注释不适用于C或C ++代码,因为它们是在与宏不同的预处理器阶段处理的。