37 votes

Pourquoi GCC dit-il "les valeurs de retour nommées ne sont plus supportées"?

J'ai accidentellement mis l'accolade ouvrante de la définition de ma fonction après l'instruction return

 int id(int k) return k; { }
 

Mais GCC a répondu avec un message d'erreur étrange

erreur: les valeurs de retour nommées ne sont plus supportées

Quelqu'un peut-il s'il vous plaît expliquer ce que cette fonctionnalité étrange pourrait être? Je n'en ai jamais entendu parler.

39voto

Steve Townsend Points 36948

Voir ici - début NRVO mise en œuvre par la définition explicite de la valeur de retour de la tête de la fonction.

La prise en charge Native pour NRVO sans cette extension a été ajoutée ici - GCC Version 3.1 de la Série.

Bref, couper et coller, pour le contexte:

G++ prend désormais en charge le "nommé retour la valeur de l'optimisation": pour un code comme

A f () {
  A a;
  ...
  return a;
}

G++ va allouer un dans le retour la valeur de la fente, de sorte que le rendement devient un no-op. Pour que cela fonctionne, tous de retour les déclarations dans la fonction doit retourner la même variable.

4voto

Paul Points 18124

Voir ici

Ils ont été supprimés dans gcc3.4

2voto

Hasturkun Points 18653

Il s’agit d’une extension de GCC , supprimée dans GCC 3.4 .

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