cpp在标记之间插入额外的空格

时间:2009-06-08 11:06:48

标签: c++ gcc

我正在尝试强制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)* / *。”

有什么建议吗?

祝你好运

德克

1 个答案:

答案 0 :(得分:2)

您可以使用##预处理程序运算符将标记粘贴在一起:

#define F foo
#define B bar

F##B

产生

foobar

但请注意,cpp旨在成为C(和C ++)预处理器 - 它不应该是一个通用工具。如果您真的想要做这种事情,请看一下替代宏处理器,例如m4。

另请注意,构建注释不适用于C或C ++代码,因为它们是在与宏不同的预处理器阶段处理的。