我想将包含文件的名称作为编译器参数传递,以便我可以修改大量配置参数。但是,我的 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)
由于同样的原因它不起作用。
出于脚本原因,我宁愿在命令行上执行此操作,也不愿在适当的例程中编辑包含行。有什么办法吗?
最佳答案
要添加引号,您需要这个技巧:
#define Q(x) #x
#define QUOTE(x) Q(x)
#ifdef FILE_ARG
#include QUOTE(FILE_ARG)
#endif
关于c++ - 在 C++ 预处理器中为参数添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6671698/