Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » gcc Problem?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.09.2003, 11:17 Uhr
Pablo
Supertux
(Operator)


Ich habe folgende Wrapper Funktion geschrieben:


C++:
// in Datei allgemein.h
char* get_next_token(char*);
.....

// in datei a.c
char* get_next_token(char* buffer)
{
    return strtok(buffer, " ()");
}



Ich habe Funktionen, die get_next_token aufrufen, die auch in der Datei a.c enthalten sind: z.B:

C++:
token = get_next_token(line[i]); // wobei line ein char** ist



Ich habe eine neue Datei meinem Projekt hinzugefügt, nämlich tool.c, die auch allgemein.h includiert. Und die Warpper-Funktion von strtok hab ich in die neue Datei tool.c kopiert und von a.c entfernt.

Wenn ich kompiliere bekomme ich die Warnung: warning: assignment makes pointer from integer without a cast Und wen ich

C++:
token = (char*) get_next_token(line[i]); // wobei line ein char** ist


mache, bekomme ich keine Warnung.

Wieso bekomme ich die Warnung, wenn die aufrufende Funktion und die Warpper nicht in der selben Datei sind?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.09.2003, 12:05 Uhr
0xdeadbeef
Gott
(Operator)


Wenn die Deklaration von get_next_token der aufrufenden Funktion noch nicht bekannt ist, geht der Compiler implizit davon aus, dass get_netx_token einen int zurückgibt. Kompilier das Ding mal mit -Wall, dann sollte er dir das auch anzeigen. Für sowas gibt es übrigens Header-Dateien
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.09.2003, 15:35 Uhr
Pablo
Supertux
(Operator)


natürlich hab ich Header5 Dateien benutzt, und -Wall hab ich auch benutzt. Vielleicht hab ich auf eine Stelle ncht aufgepasst.

Aber es hängt auch nicht von der Reihenfolge der kompilierung, oder?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.09.2003, 16:14 Uhr
0xdeadbeef
Gott
(Operator)


Nein. Wird die allgemein.h in der a.c included?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.09.2003, 16:21 Uhr
Pablo
Supertux
(Operator)


emuass.c (a.c) hat folgendes:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#include "debug.h"
#include "colors.h"
#include "emuass.h" // das ist allgemein.h



tool.c

C++:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#include "debug.h"
#include "colors.h"
#include "emuass.h"



Also, gleich, das kann ich nicht verstehen, aber ist nicht so schlimm, weil das Programm trotzdem funktioniert, aber ich will keine Warnungen.

Das ist meine Makefile

Code:
OBJ = main.o error.o emuass.o tools.o

emuass : $(OBJ)
        gcc -Wall -o emuass $(OBJ) -lm

main.o: main.c debug.h colors.h help.h emuass.h
error.o: error.c emuass.h
tools.o: tools.c debug.h colors.h emuass.h
emuass.o: emuass.c debug.h colors.h emuass.h


.PHONY : clean

clean :
        rm emuass $(OBJ) 2>/dev/null


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.09.2003, 16:49 Uhr
0xdeadbeef
Gott
(Operator)


Hm. Ich kann zumindest auf dem ersten Blick keinen Fehler erkennen. Kannst du die ganze emuass.h und emuass.c herzeigen?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.09.2003, 17:40 Uhr
Pablo
Supertux
(Operator)


Das ist zu lang..... mindestens 10 kb

die emuass.h kann ich posten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.09.2003, 17:43 Uhr
0xdeadbeef
Gott
(Operator)


Das bringt nicht so richtig viel. Kannst dus mir per mail schicken?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.09.2003, 17:47 Uhr
Pablo
Supertux
(Operator)


Ja, das werde ich auch tun, ich weiß nicht mehr, deine Adrsse bei at gmx dot net.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.09.2003, 19:01 Uhr
Pablo
Supertux
(Operator)


Mann, ist das peinlich . @beefy danke, aber nicht nötig. Ich hab schon den Fehler erkannt. Ich hatte tatsächlich

Code:
char* get_next_token(char*);



nicht in emuass.h. :kopfklastch:

ich bin davon ausgegangen, dass die Zeile in der emuass.h Zeile enthalten war, weil ich bevor etwas in einer .c Datei geschrieben hab, hab ich in der emuass.h reingeschrieben, muss ich wohl dieses Mal vergessen haben....... Das ist das Alter, man vergisst die Sachen immer wider

Trotzdem danke.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 21.09.2003 um 20:24 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: