c++ - 是否有更简洁的方法来包含基于宏定义部分名称的文件?

标签 c++ macros c-preprocessor

基于用户定义的数值宏PROBNO,我想包含一个文件"prob[PROBNO].hpp",并运行同名函数, 概率 [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';
}

这样就可以了,但是看起来很乱。有什么办法可以摆脱一些指令吗?

最佳答案

使用角度而不是引号:

#define PROBNAME <prob PROBNO.h>

#include PROBNAME

关于c++ - 是否有更简洁的方法来包含基于宏定义部分名称的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244959/

相关文章:

c++ - 链表Front()函数语法错误

c++ - 无法构建外部库依赖项

rust - 匹配宏中的多种枚举类型

c - 编译时获取 size_t 中的位数

c - 这个 linux 内核宏中的 BIT() 是什么意思?

检查何时同时包含两个 header

c++ - 带有非静态成员函数的 std::async

c++ - 在这种情况下如何正确使用互斥锁

c - 为什么两次计算给出不同的答案?

fortran - Fortran中的CPP预处理语句可以缩进吗?