目前在两个编译器下找到方法,代码不通用。
理论上VS版本的兼容性比较好(然而在clang上编译不过去)。
clang:
#define sendData(something) \
{ \
static char string_[] = (something); \
\
class \
{ \
public: \
static __attribute__((constructor)) void registerString() \
{ \
printf("-------------> Register string: %s\n", string_); \
} \
\
void warningRemover() { }; \
} a; \
a.warningRemover(); \
}
VS(2010):
#define sendData(something) \
{ \
class \
{ \
public: \
static const char *getSomething() \
{ \
return something; \
} \
\
void helperMe() \
{ \
TestClass
} \
\
void warningremover() { } \
} helper; \
helper.warningremover(); \
}
template
class Helper
{
public:
Helper()
{
printf("String -> %s", f());
}
};
template
class TestClass
{
public:
static Helper
TestClass()
{
g_helper;
}
};
template
Helper