小编bra*_*onC的帖子

可以将#defines列表转换为字符串

假设我#define在外部库的头文件中有一个s 列表.这些#define代表从函数返回的错误代码.我想编写一个转换函数,它可以将错误代码作为输入,并作为输出返回表示实际#define名称的字符串文字.

举个例子,如果我有

#define NO_ERROR 0
#define ONE_KIND_OF_ERROR 1
#define ANOTHER_KIND_OF_ERROR 2
Run Code Online (Sandbox Code Playgroud)

我想要一个能够调用的函数

int errorCode = doSomeLibraryFunction();
if (errorCode)
    writeToLog(convertToString(errorCode));
Run Code Online (Sandbox Code Playgroud)

并且convertToString()能够自动转换该错误代码,而不是一个巨大的开关盒

const char* convertToString(int errorCode)
{
    switch (errorCode)
    {
        case NO_ERROR:
           return "NO_ERROR";
        case ONE_KIND_OF_ERROR:
           return "ONE_KIND_OF_ERROR";
        ...
     ...
...
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,如果这是可能的,那么可以使用模板和元编程,但这只会使错误代码实际上是一种类型,而不是一堆处理器宏.

c++ string literals c-preprocessor

11
推荐指数
2
解决办法
2316
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

literals ×1

string ×1