【发布时间】:2016-02-06 18:45:03
【问题描述】:
基于用户定义的数字宏PROBNO,我想包含一个文件"prob[PROBNO].hpp",并运行同名函数prob[PROBNO]()。这里的问题是我需要包含文件的引号,因为 给了我一个找不到文件的错误。我目前正在做以下事情:
#define STRINGIFY2(x)#x
#define STRINGIFY(x)STRINGIFY2(x)
#define CONCAT2(x,y)x##y
#define CONCAT(x,y)CONCAT2(x,y)
#define PROBNAME CONCAT(prob,PROBNO)
#include STRINGIFY(PROBNAME.hpp)
#include<iostream>
int main(){
std::cout<<PROBNAME()<<'\n';
}
这可以完成工作,但看起来很乱。有什么办法可以摆脱一些指令吗?
【问题讨论】:
-
您不需要标记连接来生成文件路径,使用连接可能会导致(不必要的)编译器错误。不使用连接将简化您的宏。有关示例和更多说明,请参阅 stackoverflow.com/a/32077478/1566221。
标签: c++ macros c-preprocessor