私はかなり制限された環境で C89 で作業しています。GCC 4.4 に基づくコンパイラー用に作成する必要がありますが、コードは GCC 3.2 でコンパイルされたテストにも合格する必要があります。私たちの毎日の開発コンパイラは GCC 5.4 です。私のお金では、これは聞こえるほど狂っていますが、これらは私が配られたカードです。
64 ビット整数が必要なため、使用するために C89 ルールを緩和する手順を実行しましたlong long
。最初のコードは、次のように問題を処理します。
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wlong-long"
typedef unsigned long long my_type
#pragma GCC diagnostic pop
残念ながら、これは GCC 4.4 では機能しません。プッシュ操作とポップ操作が GCC 4.6 で導入されたため、次のように変更しました。
#pragma GCC diagnostic ignored "-Wlong-long"
typedef unsigned long long my_type
#pragma GCC diagnostic error "-Wlong-long"
悲しいかな、GCC 3.2 はそれを好まない:
warning: ignoring #pragma GCC diagnostic
ISO C89 does not support `long long'
warning: ignoring #pragma GCC diagnostic
でコンパイルされているのを見ると、GCC 3.2 のリリース時には存在しなかったのではない-Wunknown-pragmas
かと思います。#pragma GCC diagnostic
誰でも解決策を提案できますか?