【问题标题】:Assembling namespace name + container based on preprocessor directives [closed]基于预处理器指令组装命名空间名称+容器[关闭]
【发布时间】:2016-09-04 11:00:53
【问题描述】:

尝试了以下代码的几个变体但无法编译,基本上我想要实现的是我希望能够定义命名空间,即 std 或eastl,然后简单地将其附加到容器类型:

#ifndef EASTL 
#include <vector> 
#define NMS std  
#else  
#include <EASTL\vector.h>
#define NMS eastl  
#endif

template<class T>
using vector_t = NMS##::##vector<T>;  

但不幸的是,我无法找到一种方法来做到这一点。任何建议都非常受欢迎。

【问题讨论】:

  • 这不是印刷错误...

标签: c++ c-preprocessor


【解决方案1】:

如果你真的确定你想要那个,简单地说

#ifndef EASTL 
#include <vector> 
#define NMS std  
#else  
#include <EASTL\vector.h>
#define NMS eastl  
#endif

template<class T>
using vector_t = NMS::vector<T>;  

没有 ## 预处理器指令(这些指令仅在宏定义中处理,不在模板中)。

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多