宏与字符串解决方案
宏与字符串
#define CON1 MACRO1(3,"abcdef")
template<int n>
class A{
};
int main(int argc,char* argv[])
{
A<GET_NUM(CON1)> xx;
const char* p = GET_TEXT(CON1);
}
求三个宏的实现,MACRO1,GET_NUM,GET_TEXT,一定要编译通过哦
------解决方案--------------------
#define CON1 MACRO1(3,"abcdef")
template<int n>
class A{
};
int main(int argc,char* argv[])
{
A<GET_NUM(CON1)> xx;
const char* p = GET_TEXT(CON1);
}
求三个宏的实现,MACRO1,GET_NUM,GET_TEXT,一定要编译通过哦
------解决方案--------------------
#include <cstdio>
#define HELPER(n,s,name) \
namespace _##name { \
extern char const STR[] = #s; \
extern const int I = n; \
}
#define GET_NUM(a) (_##a::I)
#define GET_TEXT(a) (_##a::STR)
template <int v>
struct A{};
HELPER(3,abcdef,CON1)
int main()
{
A<GET_NUM(CON1)> xx;
int v = GET_NUM(CON1);
const char* p = GET_TEXT(CON1);
printf("%d,%s", v, p);//3, abcdef
return 0;
}