如果我向它传递两个字符串,PLUS宏如何工作,它会将它们解析为枚举值? 提前致谢。 对不起,我无法表达得太清楚。
#include "stdio.h"
#include <string>
#include <iostream>
using namespace std;
#define PRINT(Y) #Y
#define PLUS(X, Y) X+Y
int main( int argc, char *argv[] )
{
typedef enum {
FIRST,
SECOND,
THIRD
};
const char *a="THIRD", *b="SECOND";
cout << PRINT(THIRD+SECOND is: ) << PLUS(a, b) << endl;
return 0;
}
答案 0 :(得分:2)
我认为,根据你的后续评论,我更了解你要做的事情:尝试同时创建符号的字符串形式和非字符串形式,例如枚举值。
我通常这样做的方式如下:
#define Q(x) QQ(x)
#define QQ(x) #x
然后将它与非字符串值一起使用,例如enum:
enum { FRED = 1, BARNEY = 2 };
int main()
{
std::cout << "The enum " << Q( FRED ) << " has the value " << FRED << std::endl;
std::cout << "The enum " << Q( BARNEY ) << " has the value " << BARNEY << std::endl;
}
打印:
The enum FRED has the value 1
The enum BARNEY has the value 2
如果这不是您要完成的任务,请在您的问题中澄清并留下评论。