首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++预处理器中向参数添加引号

在C++预处理器中向参数添加引号
EN

Stack Overflow用户
提问于 2011-07-13 05:57:16
回答 2查看 21.2K关注 0票数 31

我想将包含文件的名称作为编译器参数传递,这样我就可以修改大量的配置参数。但是,我的C++构建是通过一个类似makefile的过程,从传递给编译器和预处理器的参数中删除引号。我希望能做些等同于

#ifndef FILE_ARG
// defaults
#else
#include "FILE_ARG"
#endif

使用我的命令行,包括-DFILE_ARG=foo.h。这当然不起作用,因为预处理器不能翻译FILE_ARG。

我试过了

#define QUOTE(x) #x
#include QUOTE(FILE_ARG)

但由于同样的原因,这并不起作用。

出于脚本编写的原因,我宁愿在命令行中执行此操作,也不愿在适当的例程中编辑include行。有什么办法吗?

EN

回答 2

Stack Overflow用户

发布于 2011-07-13 06:01:03

要添加报价,您需要以下技巧:

#define Q(x) #x
#define QUOTE(x) Q(x)

#ifdef FILE_ARG
#include QUOTE(FILE_ARG)
#endif
票数 50
EN

Stack Overflow用户

发布于 2011-07-13 06:30:37

你可以做到

#ifdef FILE_ARG
#include FILE_ARG
#endif

在命令行上

$ gcc -DFILE_ARG="\"foo.h\"" ...

应该能行得通。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6671698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档