忽略它是多么令人厌恶和骇人听闻,以下是否保证安全?如果没有,为什么?
//.h
struct foo
{
const static intptr_t KEY = (intptr_t) "VALUE";
};
//.cpp
void useFoo()
{
const char * value = (const char *) foo::KEY;
printf("%s",value);
}
答案 0 :(得分:3)
不仅保证代码不安全,而且代码格式不正确。
"VALUE"
的类型为char const[6]
,无法通过intptr_t
转换为static_cast
。
答案 1 :(得分:2)
保证不编译。您不能使用static_cast
将指针转换为整数类型或反之亦然。如果它是reinterpret_cast
,那么至少可以说脆弱,因为编译器可以进行常量折叠,KEY
可能变得非唯一。
此外,您应该在应用程序中定义静态成员变量KEY
。