一个有关宏的问题


如图

这种情况,有没有办法给出一个错误号就能返回一个错误字符串。比如给0x00就返回"ERR_SUCCESS"?

还是只能自己手工把字符串敲出来存在字符串数组里?

c

曾经的你还来过 12 years, 10 months ago

我理解是想利用已有的一些宏定义直接字符串化输出,因为这些宏的名字本身就有了一些意义,比较容易读懂,起码比 0,1,2,3这些数字强多了。

第一次贴的时候居然失败了,这是打第二次字。。。悲剧啊。。。
主要思路就是利用c/c++预处理中的#运算符,上代码吧,多说不会。

----------------file Main.cpp----------------------------------------
#include <iostream> //c++标准输入输出头文件
#include <stdio.h> //要是c编译器就包含这个
#define MacroFormatOut(x) #x //用#运算符字符串x

#define ERROR_SUCCESS 0x00
#define ERROR_1 0x01
//其他已有宏定义不写啦,反正有几个有点意思的宏 :)

int main() {
std::cout << MacroFormatOut(ERROR_SUCCESS) << std::endl;
printf("%s", MacroFormatOut(ERROR_1) );
return 0;
}
--------------file end-----------------------------------------------

输出结果:
ERROR_SUCCESS
ERROR_1

乘着企鹅去南极 answered 12 years, 10 months ago

Your Answer