それがどれほど反発的でハッキーであるかを無視して、以下は安全であることが保証されていますか? そうでない場合、なぜですか?
//.h
struct foo
{
const static intptr_t KEY = (intptr_t) "VALUE";
};
//.cpp
void useFoo()
{
const char * value = (const char *) foo::KEY;
printf("%s",value);
}
それがどれほど反発的でハッキーであるかを無視して、以下は安全であることが保証されていますか? そうでない場合、なぜですか?
//.h
struct foo
{
const static intptr_t KEY = (intptr_t) "VALUE";
};
//.cpp
void useFoo()
{
const char * value = (const char *) foo::KEY;
printf("%s",value);
}
コードの安全性が保証されていないだけでなく、コードの形式が正しくありません。
"VALUE"
はタイプであり、経由char const[6]
で変換することはできません。intptr_t
static_cast
コンパイルされないことが保証されています。static_cast
を使用してポインターから整数型に、またはその逆に変換することはできません。それが である場合、コンパイラは定数の折りたたみを行うことができ、が一意でなくなる可能性があるため、控えめに言っても壊れやすいreinterpret_cast
でしょう。KEY
さらに、アプリケーションで静的メンバー変数を定義するKEY
必要があります。