0

この警告を削除するためのCプログラミング言語の解決策を探しています。

符号付き警告と符号なし警告の比較

タイプの変数でcasttoを実行する代わりに、次のように考えました。unsignedint

#if MAX_NAME >= INT_MAX
  size_t name_size = 0;
#define INT_TYPE size_t
#else
  int name_size = 0;
  #define INT_TYPE int
#endif

その後:

if(.. && name_size++ >= (INT_TYPE)sizeof(name)) {
//..
}

どのように修正しますか?

また、マクロの名前の提案もINT_TYPE高く評価されています。

4

1 に答える 1

2

あなたの例には欠陥があります:しかし、あなたがそれを置くとsize_t、の結果と比較するときは常に使用する必要がありsizeofます。name_sizeつまり、にする理由はありませんint

一般的な注意として、その変数には「自然な」符号を使用してください。それは1つの質問に要約されます:name_sizeこれまでに否定的であることになっていますか?

于 2012-12-07T17:56:43.663 に答える