宏来打印一个字符串

时间:2013-12-09 05:07:29

标签: c++ string macros

如果我向它传递两个字符串,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;
}

1 个答案:

答案 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

如果这不是您要完成的任务,请在您的问题中澄清并留下评论。