の文字へのポインタ私は、次のコードのロジックが含まれているレガシーコードを持っている:型キャスト符号なしロングロングC
unsigned long long address; /* Its content = Some Address, not a normal value */
strcmp (address, (const char*)some_char_buffer);
これはGCCとの警告を与えます。
誰かがcharポインタに変数 'アドレス'を型キャストする方法を提案することができます。これにより、正しくデコードされ、gccは警告を表示しません。
ポインタ値を整数として格納するには、 'stdint.h'の' intptr_t'か 'uintptr_t'を使うべきです。さもなければ、精度を失う危険があります(あるいは、精度を得ることは、変換時に失われ、同様の問題を引き起こす可能性があります)。 –
Chrisに問題がなければ、レガシーコードではないでしょう...近代化の一環として、あなたの推薦は賢明です。 'some_char_buffer'が実際には' unsigned char'(あるいは 'unsigned char')でないかぎり、質問の中の' const char * 'キャストはおそらく必要ないでしょう。 –
@JonathanLeffler - 私はコード部分にスキップするのはひどい傾向があり、最初の行には「レガシーコード」という言葉が全くありませんでした。私はちょっとばかげていると感じています... –