C++ 函数内的局部静态变量可以在函数运行之前被初始化吗

2024-10-22 16:30:46
有1个网友回答
网友(1):

目前在两个编译器下找到方法,代码不通用。
理论上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 OMG; \

} \

\

void warningremover() { } \

} helper; \

helper.warningremover(); \

}

template

class Helper

{

public:

Helper()

{

printf("String -> %s", f());

}

};

template

class TestClass

{

public:

static Helper g_helper;

TestClass()

{

g_helper;

}

};

template

Helper TestClass::g_helper;