0

忽略它是多么令人厌恶和骇人听闻,以下内容是否可以保证是安全的?如果不是,为什么?

//.h
struct foo
{
 const static intptr_t KEY = (intptr_t) "VALUE";
};

//.cpp
void useFoo()
{
 const char * value = (const char *) foo::KEY;
 printf("%s",value);
}
4

2 回答 2

3

不仅不能保证代码安全,而且代码格式不正确。

"VALUE"是 type char const[6],不能转换成intptr_tvia static_cast

于 2012-06-29T18:59:52.947 回答
2

保证不编译。您不能使用static_cast将指针转换为整数类型,反之亦然。如果它是一个,至少可以说reinterpret_cast脆弱的,因为编译器可以进行常量折叠并且KEY可能变得不唯一。

此外,您应该在应用程序中定义静态成员变量。KEY

于 2012-06-29T19:00:12.167 回答