37 votes

Extension C: <? and > ? les opérateurs

J'ai observé qu'il y avait à un moment donné un opérateur <? et >? dans GCC. Comment puis-je les utiliser 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
 

38voto

Carl Norum Points 114072

Les récents manuels de dire:

Le G++ minimum et le maximum des opérateurs (‘<?"et">?') et leurs composés formes ("<?="et">?=') ont été remplacés et sont maintenant supprimés à partir de G++. Code à l'aide de ces opérateurs doivent être modifiés pour utiliser std::min et std::max à la place.

Une recherche rapide sur le passé de documents, ce qui semble indiquer qu'ils ont été enlevés autour de la version 4.0 (3.4.6 les inclut, 4.0.4 qui ne fonctionne pas).

8voto

paxdiablo Points 341644

Si c'est une fonction min , je voudrais simplement utiliser:

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

ou std::min . Je ne suis pas un grand fan des "extensions" C / C ++, car elles me lient à une implémentation spécifique du langage.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X