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

 我来答
就烦条0o
2016-08-04 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46484
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
目前在两个编译器下找到方法,代码不通用。
理论上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<getSomething> OMG; \

} \

\

void warningremover() { } \

} helper; \

helper.warningremover(); \

}

template<const char *(*f)()>

class Helper

{

public:

Helper()

{

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

}

};

template<const char *(*f)()>

class TestClass

{

public:

static Helper<f> g_helper;

TestClass()

{

g_helper;

}

};

template<const char *(*f)()>

Helper<f> TestClass<f>::g_helper;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式