Atmel Studio 7 -> conflicting declaration of C function utoa

OP #4822125
Lesenswert?
• ▲
▼
Guten Morgen zusammen,

ich habe leider ein kleines Problem. Momentan arbeite ich mit Atmel 
Studio 7 und dem Atmel-ICE Basic damit ich meinen Arduino Due debuggen 
kann. Da ich aber vorher mit Visual Studio gearbeitet habe, musste ich 
erst mein vorhandenes Projekt im Atmel Studio lauffähig bekommen.

Das meiste habe ich glaub ich bereinigt, allerdings bekomme ich jetzt 
immer die folgende Fehlermeldung:
1
error: conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)'

Diese Funktion gibt es in der stdlib und in der itoa.h für Arduino...

Könnte mir vielleicht jemand sagen, wie ist das beheben kann? Hab leider 
vorher nocht nichts mit dem Atmel Studio gemacht, deshalb kenne ich mich 
mit der Umgebung noch nicht so aus...

Gruß Kilian
Gast #4822137
Lesenswert?
• ▲
▼
offensichtlich hast Du verschiedene Declarationen von utoa. Das erste 
Argument sollte m.E. 'unsigned int' sein.

Ist das die komplette Fehlermeldung?
Gibt es evt. noch Hinweise auf andere Codezeilen?
Kannst Du die beiden von Dir gefundenen Deklarationen hier auch posten?
OP #4822151
Lesenswert?
• ▲
▼
Also es gibt ein Warning in der stdlib.h:
1
c:\program files (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdlib.h(201,8): info: previous declaration 'char* utoa(unsigned int, char*, int)'
2
     char * _EXFUN(utoa,(unsigned, char *, int));

Und danach kommt die Fehlermeldung in der itoa.h:
1
c:\program files (x86)\arduino\hardware\arduino\sam\cores\arduino\itoa.h(34,65): error: conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)'
2
     extern char* utoa( unsigned long value, char *string, int radix ) ;
OP #4822187
Lesenswert?
• ▲
▼
Achim S. schrieb:
> Nutze nur die Header, dessen Lib Du auch einbindest.
>
> Wenn Du 2 Libs mit 2 unterschiedlichen Funktionen gleichen Namens
> verwenden willst, hast Du ein Problem.

Ich habe immer nur die "stdlib.h" eingebunden und nie die "itoa.h". Ich 
habe auch mal die includes von stdlib auskommentiert, hat aber auch 
nicht geholfen.

Kann es vielleicht daran liegen, dass ich den Ordner von "itoa.h" 
mitlinke? Allerdings benötige ich den Ordner für die "Arduino.h" etc.
Persönliche Seite #4822426
Lesenswert?
• ▲
▼
Kilian K. schrieb:
> c:\program files
> (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\inc 
lude\stdlib.h(201,8):
> info: previous declaration 'char* utoa(unsigned int, char*, int)'
>      char * _EXFUN(utoa,(unsigned, char *, int));
>
> Und danach kommt die Fehlermeldung in der itoa.h:c:\program files
> (x86)\arduino\hardware\arduino\sam\cores\arduino\itoa.h(34,65): error:
> conflicting declaration of C function 'char* utoa(long unsigned int,
> char*, int)'
>      extern char* utoa( unsigned long value, char *string, int radix ) ;

Im INCLUDE-Pfad auf dem Rechner werden die Include-Dateien zweier 
Entwicklungssysteme gemischt, einerseits Atmel Studio 7, andererseits 
Ardiuno.
Moderator #4822709
Lesenswert?
• ▲
▼
Rufus Τ. F. schrieb:
> Im INCLUDE-Pfad auf dem Rechner werden die Include-Dateien zweier
> Entwicklungssysteme gemischt, einerseits Atmel Studio 7, andererseits
> Ardiuno.

Das Atmle Studio kann nichts dafür. Der Konflikt kommt daher, dass itoa
und seine Brüder sowohl in der Arduino-Bibliothek als auch neuerdings
(seit ca. 2 Jahren) in der Newlib, die ebenfalls von Arduino verwendet
wird, definiert sind.

Das alleine wäre aber noch kein Problem, wenn die Signaturen dieser
Funktionen in beiden Bibliotheken übereinstimmen würden. Dann würde eben
jeweils diejenige Funktion gelinkt, die der Linker als erste in einer
der beiden Bibliotheken findet.

Da aber in der Arduino-Bibliothek irrtümlicherweise das erste Argument
von utoa als unsigned long statt unsigned int deklariert wurde, kommt es
hier zum Konflikt. Dieser Fehler ist aber wohl mittlerweile behoben.

Anstatt die Signatur in der Arduino-Bibliothek zu korrigieren, hätten
die Arduino-Entwickler diese Funktionen IMHO auch gleich komplett
entfernen können, da sie ja nun in der Newlib enthalten sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren