私は、ある時点で GCCに<?
and演算子があることに気付きました。>?
GCC 4.5 でこれらを使用するにはどうすればよいですか? それらは削除されましたか?もし削除された場合、それはいつですか?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
最近のマニュアルには次のように書かれています。
G++ の最小および最大演算子 ('<code><?' および '<code>>?') とそれらの複合形式 ('<code><?=') および '<code>>?=') は廃止されました。 G++ から削除されました。これらの演算子を使用するコードは、代わりに
std::min
andを使用するように変更する必要がありstd::max
ます。
過去のドキュメントを簡単に検索すると、バージョン 4.0 前後で削除されたようです (3.4.6 には含まれていますが、4.0.4 には含まれていません)。
の初期の反復g++
( C コンパイラではない) では、最小値または最大値を与えるためにこれらの演算子を使用していましたが、std::min
andを支持して長い間非推奨でしstd::max
た。
基本的に、それらは (ただし、またはの二重評価の可能性はありません):a
b
a <? b --> (a < b) ? a : b
a >? b --> (a > b) ? a : b
それらを置き換えるという点では(実際に置き換える必要があります)、次のようなものを使用できます。
Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;
または同等のものを使用しstd::min
ます。
私は C/C++ の「拡張機能」(特に非推奨または削除された拡張機能) を使用することはあまり好きではありません。
完全に適切な標準メソッドが利用可能な場合、非標準の拡張機能を使用しないでください。