Pergunta

Eu observei que havia em algum momento um <? e >? Operador no GCC. Como posso usá -los no GCC 4.5? Eles foram removidos e, se sim, quando?

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
Foi útil?

Solução

Manuais recentes dizer:

Os operadores mínimos e máximos G ++ ('<?' e '>?') e suas formas compostas ('<?=') e '>?=') foram preteridos e agora são removidos do G ++. Código usando esses operadores deve ser modificado para usar std::min e std::max em vez de.

Uma pesquisa rápida dos documentos anteriores parece indicar que eles foram removidos em torno da versão 4.0 (3.4.6 os inclui, 4.0.4 não).

Outras dicas

Iterações anteriores de g++ (não o compilador C) usou esses operadores para fornecer os valores mínimos ou máximos, mas há muito tempo foram preteridos a favor de std::min e std::max.

Basicamente, eles equiparam (mas sem a possibilidade de dupla avaliação de a ou b):

a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b

Em termos de substituí -los (e você realmente deve substitua -os), você pode usar algo como:

Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;

ou equivalentes usando std::min.

Não sou um grande fã de usar "Extensões" C/C ++ (especialmente aquelas que foram obsoletas e/ou removidas), pois me vinculam a uma implementação específica do idioma.

Você nunca deve usar uma extensão fora do padrão, onde um método padrão perfeitamente adequado está disponível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top