2009-05-13 4 views
1

J'utilise des outils de couverture de code Intel sous Linux à l'aide du compilateur g ++. Pour une classe particulière, l'outil de couverture affiche 2/3 fonctions supplémentaires que celles réellement présentes dans le code source.Code généré par le compilateur dans la couverture de code

Quelles sont ces fonctions supplémentaires? Sont-ils des fonctions générées par le compilateur? J'exclus les fichiers d'en-tête de la couverture de code. Mes classes sont simples avec ctor et dtor vides.

Je suppose que les fonctions suivantes sont générées par le compilateur.

  1. Constructor Copie
  2. Opérateur d'affectation
  3. Macro (pas dans mon cas)
  4. mécanismes de connexion à sous du signal (par exemple dans Qt moc compilateur génère ces)
+1

Peut-être utile de donner quelques exemples des noms de fonctions que vous voyez ... –

+0

I 1/2 fonctions avec symbole _zn attaché au ctor. Mais parfois je ne peux pas voir ces fonctions supplémentaires rapportées. –

+0

Je pensais à quelque chose comme - "pour la classe yax, je vois les fonctions supplémentaires suivantes" avec une liste des noms de fonctions complets et de préférence la déclaration de classe. –

Répondre

1

Cette blog entry (concerne débogage avec GDB) explique pourquoi vous voyez les "extra" constructeurs. Gcc génère deux corps de fonctions distincts pour un constructeur. L'un est un régulier qui construit l'objet entier, y compris toutes les bases. Un autre construit tout sauf les classes de base virtuelles. En l'occurrence, gcc émet les deux constructeurs même pour les classes qui n'ont aucune base virtuelle.

Questions connexes