-Wlong-long
gcc警告の理由は何ですか?gccに長い間警告が表示されるのはなぜですか?
gccのmanページから:
-Wlong-long
Warn if long long type is used. This is enabled by either -Wpedantic or -Wtraditional in ISO C90 and C++98 modes. To inhibit the warning messages, use -Wno-long-long.
私はそれを理解し、long long
は、少なくとも64ビット(事実上、それは常に、少なくとも今日のコンパイラで64ビットである)であることが必要です。これはISO C90やC++ 98では当てはまりませんでしたか?long long
を使用しない別の理由がありますか?
は私がint64_t
や友人などの程度<stdint.h>
タイプを知っているが、いくつかのそれほど古くないコンパイラ(例えばVS2005、およびグリーンヒルズARM 3.5)<stdint.h>
を提供していない、と私はlong long
がために(少なくとも)64ビットのだろうと思いましたそれらと新しいツールチェーン。
'stdint.h'を持たないコンパイラはC99に準拠していないので、' long long'がまったくないというオッズがあります。 (彼らがGCCの古いバージョンでない限り) – zwol
パトリックの "not-so-old"コンパイラは、90年代のgccと同じカテゴリーにあるようです - 長い間、 'stdint.h'なしで90年代の大半を通じて、C99がまだ書かれていないという言い訳に加えて、「普通の」CPUが64ビットの整数レジスタを持たないという言い訳があるので、基本的なC型のうち64ビット整数が欠けている何らかの意味がありました。) –
@ WumpusQ.Wumbley:Cは8ビットプロセッサで使用できるように設計されています(1980年代には頻繁に使用されていました)。 4つのステップで長い追加を行うことはやや面倒でしたが、数字が16777215より大きくないことが分かっていても、1つの量で操作できるという利便性は、3つではなく4つのステップを使用することによるパフォーマンスの低下に値するものでした。 8バイトタイプを使用することが正当化されるケースはずっと少なくなります。 IMHO、適切な救済策は、少なくとも独立した実装では、「長い間」長いオプションをオプションにすることでした。 – supercat