2010-07-15 7 views
0

J'essaie de compiler un code pour les commutateurs de pare-chocs dans mon robot et j'obtiens cette erreur: "Erreur - symbole 'tr' a plusieurs définitions." Qu'est-ce que ça veut dire? Je suis douloureusement nouveau à ceci ..."Erreur - symbole 'tr' a plusieurs définitions."

+2

Est-ce que 'tr' est défini dans un fichier .h inclus dans plusieurs fichiers .c? –

+0

Voir [Règle de définition unique] (http://en.wikipedia.org/wiki/One_Definition_Rule). –

Répondre

3

Cela dépend si vous voyez l'erreur au moment de la compilation ou de la liaison.

  • Si vous le voyez à l'heure du lien (lors de la construction du programme à partir de fichiers d'objets), cela signifie que vous avez deux ou plusieurs fichiers d'objet, et la variable « tr » (ou la fonction « tr ») est défini plusieurs fois dans différents fichiers.

  • Si vous le voyez au moment de la compilation (pour un seul fichier converti en un fichier objet), vous avez défini la variable ou la fonction plusieurs fois dans le fichier source donné.

1

Dans votre code, vous pourriez avoir plus d'une définition pour la variable tr. par exemple.

int tr = 0;

et dans une autre partie du même code ou le fichier

int tr = 0;

faire une recherche pour tr dans votre code pour voir si étant défini plusieurs fois.

+0

* "si elle est déclarée plusieurs fois" * - plusieurs déclarations sont correctes, plusieurs définitions sont (la plupart du temps) non. –

+0

@George - Point pris. Avoir mis à jour le poste. –

0

Peut-être que votre fichier d'en-tête (dans lequel vous pourriez avoir déclaré tr) est inclus dans les mêmes plusieurs fois de fichiers .c.

Une solution simple est d'utiliser Include Guards.

+0

Pour que ce soit un problème, l'en-tête doit définir la variable, pas simplement la déclarer - et les en-têtes devraient "jamais" (ce qui signifie "très, très rarement") définir des variables. –

Questions connexes