Вопрос
Я заметил, что в какой-то момент <?
а также >?
Оператор в 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++
(нет Compiler 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 ++ «Расширение» (особенно те, которые были устаревшими и / или удалены), поскольку они связывают меня к конкретной реализации языка.
Вы никогда не должны использовать нестандартное расширение, где доступен идеально адекватный стандартный метод.