gpt4 book ai didi

c - 如何转义 C 预处理器 token 中的下划线?

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:50 25 4
gpt4 key购买 nike

以下代码片段应该采用 PROJECT 的值(在 Makefile 中定义)并创建一个包含文件名。例如,如果 PROJECT=classifier,那么它应该在最后为 PROJECTINCSTR 生成 classifier_ir.h

我发现只要我不尝试在后缀中使用下划线,这段代码就可以工作。然而下划线的使用不是可选的——我们的代码库到处都使用它们。我可以解决这个问题,因为 PROJECT 的值数量有限,但我想知道如何使以下带有下划线的代码片段真正起作用。可以转义吗?

#define PROJECT classifier

#define QMAKESTR(x) #x
#define MAKESTR(x) QMAKESTR(x)
#define MAKEINC(x) x ## _ir.h
#define PROJECTINC MAKEINC(PROJECT)
#define PROJECTINCSTR MAKESTR(PROJECTINC)

#include PROJECTINCSTR

编辑:编译器应该尝试包含 classifier_ir.h,而不是 PROJECT_ir.h。

最佳答案

#define QMAKESTR(x) #x
#define MAKESTR(x) QMAKESTR(x)
#define SMASH(x,y) x##y
#define MAKEINC(x) SMASH(x,_ir.h)
#define PROJECTINC MAKEINC(PROJECT)
#define PROJECTINCSTR MAKESTR(PROJECTINC)

关于c - 如何转义 C 预处理器 token 中的下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/141878/

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