Я заметил, что в какой-то момент в GCC был оператор
и >?
. Как я могу использовать их в GCC 4.5? Были ли они удалены, и если да, то когда?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
Последние руководства говорят :
Операторы минимума и максимума G ++ ('
' и '
>?
') и их составные формы ('=
') и'>? =
') устарели и теперь удалены из G ++. Код, использующий эти операторы, следует изменить так, чтобы вместо них использовалисьstd :: min
иstd :: max
.
Быстрый поиск прошлых документов, кажется, показывает, что они были удалены примерно в версии 4.0 (3.4.6 включает их, 4.0.4 нет).
В более ранних итерациях g ++
( не компилятор C) эти операторы использовались для получения минимальных или максимальных значений, но они давно устарели. в пользу std :: min
и 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 ++ (особенно тех, которые были объявлены устаревшими и / или удалены), поскольку они привязывают меня к конкретной реализации языка.
Вы никогда не должны использовать нестандартное расширение, если доступен совершенно адекватный стандартный метод.