Sun Studio 12: C++ ユーザーズガイド

符号拡張のチェック

符号なし整数型の式において、通常の ISO C 値保護規則が符号付き整数値の符号拡張に対処している状況があるかどうかを、-xport64 オプションを使用してチェックすることもできます。こういった符号拡張は、実行時に微妙なバグの原因となる可能性があります。


example% cat test3.c
int i= -1;
void promo(unsigned long l) {}

int main() {
    unsigned long l;
    l = i;  // warn
    promo(i);       // warn
}
example% CC -c -xarch=v9 -Qoption ccfe -xport64=full test3.c
"test3.c", 行 6: 警告: "int" から 64 ビット整数への変換では符号拡張が発生します。
"test3.c", 行 7: 警告: "int" から 64 ビット整数への変換では符号拡張が発生します。
2 個の警告が検出されました。