gpt4 book ai didi

c++ - cpp 在标记之间插入额外的空间

转载 作者:行者123 更新时间:2023-11-28 04:00:30 25 4
gpt4 key购买 nike

我试图强制 gnu - cpp 保留像/*+ ... /这样的特殊注释,因为我需要它们作为优化器提示。它与 xlc (AIX) 的 cpp 配合使用效果很好,但现在我在斜杠和加号 (/) 之间得到一个额外的空格?

例如:

$ 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) */* from table”。

有什么建议吗?

最好的问候

德克

最佳答案

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

#define F foo
#define B bar

F##B

产生

foobar

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

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

关于c++ - cpp 在标记之间插入额外的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com