Deutsch   English   Français   Italiano  
<t3u03o$1k6k$1@cabale.usenet-fr.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!3.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail
From: Olivier Miakinen <om+news@miakinen.net>
Newsgroups: fr.comp.sys.mac.programmation,fr.comp.lang.c
Subject: Re: XCode C99 : duplicate symbol
Followup-To: fr.comp.lang.c
Date: Fri, 22 Apr 2022 12:30:16 +0200
Organization: There's no cabale
Lines: 63
Message-ID: <t3u03o$1k6k$1@cabale.usenet-fr.net>
References: <625e723a$0$22264$426a74cc@news.free.fr>
NNTP-Posting-Host: pa-129.182.162.202.frcl.bull.fr
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: cabale.usenet-fr.net 1650623416 53460 129.182.162.202 (22 Apr 2022 10:30:16 GMT)
X-Complaints-To: abuse@usenet-fr.net
NNTP-Posting-Date: Fri, 22 Apr 2022 10:30:16 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
 Firefox/60.0 SeaMonkey/2.53.1
In-Reply-To: <625e723a$0$22264$426a74cc@news.free.fr>
Bytes: 2640

Bonjour,

Le 19/04/2022 à 10:26, kurtz le pirate a écrit :
> Bonjour,
> 
> Si de vieux dinosaures passent par la...

Plutôt que de chercher des dinosaures sur un groupe Mac, pourquoi
ne pas poser la question sur le groupe où c'est en charte ? Je fais
suivre.

> 
> Dans mon projet, j'ai ces fichiers :
>  a_structures.h
>  a_toolbox.h
>  a_toolbox.c
>  a_m.h
>  a_m.c
>  main.c
> 
> Le fichier a_structures.h ne contient que des définitions de structures.
> 
> Dans main.c j'ai :
>  #include "a_structures.h"
>  #include "a_toolbox.h"
>  #include "a_m.h"
> 
> 
> J'ai un tableau de chaines :
>  const char * DaysNames[] = {
> "Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi" };
> 
> que j'utilise dans le main.c :
>  printf("  Le 30/6/1954 est un %s (%d)\n", DaysNames[dayofweek], dayofweek);
> 
> 
> 
> Si le tableau est déclaré dans le main.c pas de problème.

Tel que tu l'as écrit, il n'est pas seulement déclaré mais défini.

> 
> Si le tableau est déclaré dans le a_structures.h, le compilateur sort
> une erreur :
> duplicate symbol _DaysNames in:
>  /Users/.../main.o
>  /Users/.../a_m.o
>  /Users/.../a_toolbox.o
> 
> Et la je ne comprends plus...
> Si vous avez une idée. Merci d'avance.

Parce qu'en le mettant dans un .h inclus dans différents .c, tu le
redéfinis dans chacun des .c .

Plusieurs solutions possibles : soit tu le définis en 'static', auquel
cas chaque .c aura sa propre copie du tableau, soit tu le déclares
uniquement dans le .h et tu le définis dans un seul .c .



-- 
Olivier Miakinen