Programmieren - alles kontrollieren 4.942 Themen, 20.719 Beiträge

Wo ist strcat??

michi_p / 7 Antworten / Baumansicht Nickles

Hallo,

Ich hab ein Problem mit strcat: der Compiler findet die Funktion nicht!
Zwei Dateien: Einmal mystring.h und dann mystring.cpp.
Der Fehler tritt in der .cpp Datei im "operator +" auf, da wo halt strcat verwendet wird.
Ich finde es seltsam, daß das nicht läuft, da alles fast wörtlch aus einem Buch übernommen wurde.
Probiert doch bitte mal aus, ob ihr die Datei übersetzen könnt.
Ach ja, noch was: weiß jemand den exakten Pfad zu string.h ? Ist das /usr/include/string.h?

//mystring.h

//Header Datei für einen Datentyp string
#ifndef _STRING_H
#define _STRING_H
#include

bei Antwort benachrichtigen
thomas woelfer michi_p „Wo ist strcat??“
Optionen

es wurde helfen wenn du folgende informationen weitergeben wuerdest:


  • welcher compiler unter welchem os
  • was fuer eine fehlermeldung?

was den 'exakten' pfad zu string.h angeht - den gibts nicht. _jeder_ compiler verwendet dazu eine environmentvariable namens 'include'. darin kann man durch sema getrennte pfadangaben machen, und in diesen pfaden wird dann vom praeprozessor nach den header dateien gesucht. wo string.h liegt ist dann in erster linie davon abhaengig, wie und wo man die headerdateien installiert hat...

WM_HOPETHISHELPS
thomas woelfer
this posting contains no tpyos.
bei Antwort benachrichtigen
michi_p Nachtrag zu: „Wo ist strcat??“
Optionen

also ich hab suse linux 7.3 und benutze zum kompilieren c++ bzw g++.
Ich hab mal nach string.h gesucht. so meinte ich das. da gab es nämlich mehrere Dateien.
Ich brauche eine in der strcat definiert ist!

bei Antwort benachrichtigen
thomas woelfer michi_p „compiler und os“
Optionen

strcat() befindet sich bei ansi compatiblen compiler in string.h. leider hast du nicht gesagt _welchen_ compiler du verwendest... vermute aber mal das du den gcc benutzt um c++ zu uebersetzen. unter umstaenden (kann ich nicht verifizieren) sucht der gcc nicht in include-verzeichnissen fuer c (strcat ist eine funktoin aus der c rtl, nicht aus der c++ rtl) wenn er c++ uebersetzt. wuerde mich zwar wundern... aber seis drum.

wie auch immer: string.h ist das headerfile das benutzt werden muss, und darin muss sich der prototyp fuer strcat befinden.

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
michi_p Nachtrag zu: „Wo ist strcat??“
Optionen

hab ich mir auch gedacht und steht ja auch in meinem buch, aber wenn da kein strcat ist?
hab mal gesucht und finde nix. kriegt man die header-files irgendwoher?

mfg Michael

bei Antwort benachrichtigen
thomas woelfer michi_p „und wenn da kein strcat ist?“
Optionen

natuerlich bekommt man die irgendwo her - die sind doch auf deiner festplatte. wenn sie nicht drauf waeren, dann wuerde der praeprozessor das schon bemaengeln. lass dir den inhalt der environment variable 'include' anzeigen - in einem der pfade wird das header file auch auf deinem system zu finden sein.

wenn der compiler den prototyp nicht sieht, dann kann ich mir eigentlich nur vorstellen das da z.b. irgendwas fuer c++ compilation definiert wird das die ansi c funktionen fuer den compiler unsichtbar macht.

wie auch immer: es waere _sicherlich_ einfacher wenn du die fehlermeldung mal nennen wuerdest....

WM_L8R
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
michi_p Nachtrag zu: „Wo ist strcat??“
Optionen

stimmt, die Fehlermeldung fehlt hier noch!
also folgendes: "implicit declaration of function int strcat()", seltsam ist, daß es strcpy() gibt, was ja im gleichen header stehen sollte

danke fürs Antworten
Michael

bei Antwort benachrichtigen
thomas woelfer michi_p „Fehlermeldung“
Optionen

... und das wiederum bedeutet vermutlich das der entweder nicht im header steht (waere komisch) oder das irgendein define fehlt damit er ihn sieht. (ist vielleicht aber auch irgendein problem das unter linux eben so statt findet - in diesem fall waere eine frage im linux brett angebracht.): wenn das ding nicht da ist, dann ist der compiler nicht ansi compatible, und das kann ich mir bei c compilern unter unix nur schwerlich vorstellen...

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen