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"はタイプであり、経由char const[6]で変換することはできません。intptr_tstatic_cast

于 2012-06-29T18:59:52.947 に答える
2

コンパイルされないことが保証されています。static_castを使用してポインターから整数型に、またはその逆に変換することはできません。それが である場合、コンパイラは定数の折りたたみを行うことができ、が一意でなくなる可能性があるため、控えめに言っても壊れやすいreinterpret_castでしょう。KEY

さらに、アプリケーションで静的メンバー変数を定義するKEY必要があります。

于 2012-06-29T19:00:12.167 に答える