0

私はかなり制限された環境で 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

誰でも解決策を提案できますか?

4

1 に答える 1