Вопрос

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

Вы никогда не должны использовать нестандартное расширение, где доступен идеально адекватный стандартный метод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top