Hi,
hab da mal wieder, ein frustrierendes Anfänger Problem :(
Wenn ich Funktionen aus string.h in der Main benutze, funktioniert alles
ohne Probleme.
Setze ich sie aber in einer eigenen Funktion ein, kommt es zu folgender
Fehlermeldung:
user.c:23: warning: (361) function declared implicit int
C:\Program Files (x86)\Microchip\xc8\v1.32\sources\common\itoa.c:4:
error: (1098) conflicting declarations for variable "_itoa" (user.c:23)
Die Warnung wird immer ausgegeben, egal was ich da für einen Type
deklariere!
Die Erklärung zum Error, sagt mir in diesem Zusammenhang auch nichts.
(1098) conflicting declarations for variable "*" (*:*) (Parser, Code
Generator)
Differing type information has been detected in the declarations for a
variable, or between a declaration and the definition of a variable, for
example:
extern long int test;
int test; /* oops -- which is right? int or long int ? */
Hier der Code dazu:
1
#include<xc.h> /* XC8 General Include File */
2
#include<stdint.h> /* For uint8_t definition */
3
#include<stdbool.h> /* For true/false definition */
4
#include<string.h>
5
6
#include"LCD_HD44780.h"
7
#include"user.h"
8
9
voidPrint_Zeit(intval);// liegt in user.h
10
11
voidPrint_Zeit(intval){// liegt in user.c, wird in main aufgerufen
12
charPBuff[3];
13
itoa(PBuff,val,10);
14
if(val<10){
15
LCD_Print("0");
16
}
17
LCD_Print(PBuff);
18
}
Die Impementation von itoa:
1
char*
2
itoa(char*buf,intval,intbase)
3
{
4
char*cp=buf;
5
6
if(val<0){
7
*buf++='-';
8
val=-val;
9
}
10
utoa(buf,val,base);
11
returncp;
12
}
Ich habe nicht den geringsten Schimmer, was da quer schlägt?
Ich danke schon mal für eure Mühen.
Und ich habe nicht den geringsten Schimmer, was da jetzt eigentlich was
ist.
Dein erster Quelltext ist welche Datei? user.c? Wieso steht dann ein
Kommentar drin "liegt in user.h"?
Und wieso hast du einen eigenen Quelltext für itoa()? Und in welcher
Datei ist der?
Spekulation (weil deine Fehlerbeschreibung eher mager ist):
Wahrscheinlich ist itoa() in einer deiner #includeten Headerdateien
definiert, und halt etwas anders als von dir in deiner Version.
PS:
1. Wo soll da eigentlich eine Zeile 23 sein?
Dein zitierter Quelltext hat doch etwa 18 Zeilen.
2. Hast du in deiner user.h (die du leider lieber für dich behältst)
evtl. eine Zeile
voidInitApp(void);/* I/O and Peripheral Initialization */
user.c
1
#include<xc.h> /* XC8 General Include File */
2
#include<stdint.h> /* For uint8_t definition */
3
#include<stdbool.h> /* For true/false definition */
4
#include<string.h>
5
6
#include"LCD_HD44780.h"
7
#include"user.h"
8
9
voidPrint_Zeit(unsignedval){
10
charPBuff[3];
11
utoa(PBuff,val,10);
12
if(val<10){
13
LCD_Print("0");
14
}
15
LCD_Print(PBuff);
16
}
17
18
voidInitApp(void){
19
PORTA=0;
20
PORTB=0;
21
22
TRISA=0b11100;
23
TRISB=0b00000000;
24
nRBPU=0;
25
26
GIE=1;
27
T0IE=1;
28
}
Bitte nicht dran stören, das hier jetzt "utoa" benutzt wird, ändert
nichts an der Fehlermeldung! Das sich die Error Meldung auf die Zeile
mit "utoa" bezieht sollte klar sein.
Hier nochmals die Meldungen:
user.c:20: warning: (361) function declared implicit int
C:\Program Files (x86)\Microchip\xc8\v1.32\include\stdlib.h:104: error:
(1098) conflicting declarations for variable "_utoa" (user.c:20)
Gelöscht habe ich nur Kommentare, um den Text nicht unnötig auf zu
blähen.
Ubs... hab wohl vergessen den Beitrag abzuschicken? Hier noch mal.
g457 schrieb:> Funktionsdeklaration (stdlib.h) fehlt.
Danke das war's!
Ich ging davon aus, das wenn eine Include fehlt, kommt sowas wie "Kann
xxx nicht finden..."
Mir fehlt halt noch der Überblick wie das in C organisiert ist :(
Sollte mir mal die wichtigen libs zu Gemüte führen. (sorry)
Danke nochmals an alle
MfG
Teo
Und beim nächsten Mal bitte nicht irgendwas schicken, sondern die
Originalquelltexte, zu denen auch die Meldungen gehören.
Hier ist wieder in user.c in Zeile 20 weit und breit kein utoa zu
sehen...
Klaus Wachtler schrieb:> Und beim nächsten Mal bitte nicht irgendwas schicken, sondern die> Originalquelltexte, zu denen auch die Meldungen gehören.> Hier ist wieder in user.c in Zeile 20 weit und breit kein utoa zu> sehen...
Erbsenzähler?
Nein, Zeilenzähler :-)
Wenn mir jemand Quelltexte und Fehlermeldungen zeigt, die gar nicht
zusammenpassen, dann ist das einfach Zeitverschwendung.
Wenn ein Frager seine Zeit verschwenden will, ist das seine Sache - ich
habe keine Lust dazu.
Klaus Wachtler schrieb:> Wenn mir jemand Quelltexte und Fehlermeldungen zeigt, die gar nicht> zusammenpassen, dann ist das einfach Zeitverschwendung.
Es gibt nur 1 utoa(itoa) im, recht kurzem Quelltext. Zeilen nummern
existieren nicht, weil ich die nicht kopieren kann! Was den Hinweis
"Fehler in Zeile xy" nicht sehr hilfreich macht!
Wenn Du den Zusammenhang nicht erkennen kannst, dann lass es bitte und
mach mich hier nicht so schräg von der Seite an!
Ich hatte dich nur um etwas gebeten für das nächste Mal, du brauchst
dich aber auch nicht darum kümmern - jeder wie er will.
Du willst ja, daß man dir hilft.
EOT