假设我#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)
我有一种感觉,如果这是可能的,那么可以使用模板和元编程,但这只会使错误代码实际上是一种类型,而不是一堆处理器宏.