Question

J'observé qu'il y avait à un moment donné un <? et opérateur >? dans GCC. Comment puis-je utiliser ces sous GCC 4.5? Ont-ils été enlevés, et si oui, quand?

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
Était-ce utile?

La solution

dire :

  

G ++ minimum et le maximum des opérateurs ( « <? » et « >? ») et leurs formes composées ( « de <?= ») et « >?= ») sont devenus obsolètes et sont maintenant retiré de G ++. Code à l'aide de ces opérateurs devrait être modifié pour utiliser à la place std::min et std::max.

Une recherche rapide des documents passés semble indiquer qu'ils ont été enlevés dans la version 4.0 (3.4.6 inclut les, 4.0.4 ne fonctionne pas).

Autres conseils

itérations antérieures de g++ ( pas le compilateur C) utilisé ces opérateurs pour vous donner les valeurs minimales ou maximales, mais ils ont longtemps été délaissé au profit de std::min et std::max.

En fait, ils assimilés (mais sans la possibilité d'une double évaluation de a ou b):

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

En ce qui concerne les remplacer (et vous avez vraiment devrait les remplacer), vous pouvez utiliser quelque chose comme:

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

ou équivalents en utilisant std::min.

Je ne suis pas un grand fan de l'utilisation « extensions » C / C ++ (en particulier ceux qui ont été dépréciés et / ou enlevés) car ils me lient à une mise en œuvre spécifique de la langue.

Vous ne devez jamais utiliser une extension non standard où une méthode standard parfaitement adéquate est disponible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top