当前位置:  开发笔记 > 编程语言 > 正文

如何在C预处理程序令牌中转义下划线?

如何解决《如何在C预处理程序令牌中转义下划线?》经验,为你挑选了1个好方法。

以下代码段应该采用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.



1> Torbjörn Gyl..:
#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)

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有