Hi verwende atoi in meinem Code und der Kompiler gibt folgende Warnung aus implicit declaration of function 'atoi' In welchem Header ist den atoi drinn?
Suchmaschine "atoi" und oh Wunder was bekommt man da nur für Ergebnisse ... War das zu schwer?
Gast schrieb: > Suchmaschine "atoi" und oh Wunder was bekommt man da nur für Ergebnisse > ... > > War das zu schwer? Wieder mal ein schoen sinnfreier Gast-Beitrag. Das Problem wuerde geloest, warum haelst Du nicht einfach die Finger still?
Naja, die Frage danach, welche Headerdatei den Prototypen einer Funktion enthält, die kann man sich nun wirklich selbst beantworten, dazu muss man nur wissen, wie man seinen Computer dazu bringt, alle Dateien in einem Verzeichnis nach einem bestimmten Text zu durchsuchen. Unter Windows: find atoi *.h oder findstr -s atoi *.h (letzteres geht auch noch rekursiv durch einen Verzeichnisbaum) Das ist Grundlagenwissen. Dafür braucht es kein Google, dafür muss man keine Frage in einem Forum stellen.
Rufus t. Firefly schrieb:
> find atoi *.h
Das setzt voraus, dass ein Windows-User eine Kommandozeile oeffnen kann
und den find-Befehl sowie dessen Syntax kennt. Das ist unter
Mausschubsern kein Grundlagenwissen.
Andererseits koennte ein Windows-User sich auch uebers Startmenu zur
Suchfunktion durchklicken, aber da ist die Anfrage hier im Forum schon
schneller.
Also: Header File : <stdlib.h> Funtkion: int atoi (const Char *s) Atoi konvertiert einen String, auf den s zeigt nach int. der String muss wie folgt aussehen: [ws][vz][d] [ws] = optionales Whitespace [vz] = optionales Vorzeichen [d] = Ziffern Konvertierung bricht bei 1. nichtlesbaren Zeichen ab. Rückgabe: - Alles gut: int Wert - Alles schlecht: 0
Rufus t. Firefly schrieb: > Unter Windows: > > find atoi *.h Ergibt bei mir: D:\Programme\MinGW\include>find atoi *.h FIND: Parameterformat falsch > oder > > findstr -s atoi *.h Ergibt bei mir: D:\Programme\MinGW\include>findstr -s atoi *.h stdlib.h:_CRTIMP int __cdecl atoi (const char*); stdlib.h:_CRTIMP __int64 __cdecl _atoi64(const char *); stdlib.h: { return _atoi64 (_c); } tchar.h:#define _ttoi atoi tchar.h:#define _ttoi64 _atoi64
Wirklich traurig. Damals(tm) hat man erst mal apropos & man, evtl. auch grep & find benutzt. Wenn alles nichts half, dann hat man halt einen Blick in die C Bibel geworfen. Wie unselbstständig muss man denn sein, um dermassen triviale Sachen in einem Forum zu erfragen.
oldschool schrieb: > Wirklich traurig. Damals(tm) hat man erst mal apropos & man, evtl. auch > grep & find benutzt. Mache ich heute auch so. Ist nur unter Windows schwierig (Rufus' Grundlagenwissen). > Wenn alles nichts half, dann hat man halt einen > Blick in die C Bibel geworfen. Hier stehen auch die Numerical Recipes im Regal, die helfen dabei aber auch nicht. > Wie unselbstständig muss man denn sein, um dermassen triviale Sachen in > einem Forum zu erfragen. Nein, das siehst Du falsch. Andy ist damit teamfaehig.
Mal was anderes... Ich glaub nicht, dass dieses Gelaber dem Fragensteller in irgendeiner weise hilft...
Fabi schrieb: > Mal was anderes... Ich glaub nicht, dass dieses Gelaber dem > Fragensteller in irgendeiner weise hilft... Nein, dem ist ja auch schon geholfen. Wir unterhalten uns nur.
Olli R. schrob: > Mache ich heute auch so. Ist nur unter Windows schwierig (Rufus' > Grundlagenwissen). Ach ja Windows. Da ist es ja noch viel einfacher. Auch wenn ich Microsoft Produkte eher nicht mag, VisualStudio ist da eine Ausnahme. Und die Online-Hilfe ist gut genug, um das Fehlen von apropos, man, grep & find zu verschmerzen. > Nein, das siehst Du falsch. Andy ist damit teamfaehig. Stimmt, Team ist ja das Akronym für "Toll, ein anderer machts".
oldschool schrieb: > Und die Online-Hilfe ist gut genug, um das Fehlen von apropos, man, grep > & find zu verschmerzen. Die Online Hilfe war in Visual Studio 4 noch gut. Seit dem ist sie immer schlechter geworden. > Das setzt voraus, dass ein Windows-User eine Kommandozeile oeffnen > kann und den find-Befehl sowie dessen Syntax kennt. Das ist unter > Mausschubsern kein Grundlagenwissen. Leider. Einen Verzeichnisbaum löschen kann in der Mausschubsoberfläche schon mal eine Zeit dauern. Dasselbe in Command.com dauert ein paar Augenzwinkern. Dasselbe für Kopieraktionen: In der Zeit in der die GUI rausfindet wieviele Byes überhaupt zu kopieren sind, bist du in der Command Line schon 3 mal fertig. Fazit: Ich kann mir nicht helfen. Aber wenigstens ein bischen Grundlagenwissen, wie man mit einer Command Line arbeitet, sollte jeder Benutzer haben. Vor allen Dingen dann, wenn er Software entwickelt.
Hier im Thread tummeln sich ja wieder mal besonders gescheite Programmierer ;-) Hier mal mein Ansatz, mit einem gescheiten Erklärungsversuch: Wenn eine Warnung kommt wie "implicit declaration of function 'atoi' " dann fehlt wahrscheinlich nur das include zur Headerdatei, in welchem sich die Vorwärtsdeklaration zur Funktion 'atoi' befindet. Also müsste folgende Zeile helfen:
1 | #include <stdlib.h> |
Johnny schrieb: > Hier mal mein Ansatz, mit einem gescheiten Erklärungsversuch: > Wenn eine Warnung kommt wie "implicit declaration of function 'atoi' > " dann fehlt wahrscheinlich nur das include zur Headerdatei, in welchem > sich die Vorwärtsdeklaration zur Funktion 'atoi' befindet. > Also müsste folgende Zeile helfen: >
1 | > #include <stdlib.h> |
2 | >
|
Du bist ja putzig. Ja, dass er die includen muss, war dem OP schon klar. Seine Frage war nur, wie er die entsprechende Headerdatei namentlich identifizieren kann, und da hilft kurz gurgeln.
Welche Funktion welche Headerdatei benötigt steht normalerweise in der Compilerhilfe oder in der Beschreibung zu den Librarys. Wenn man zu faul ist die entsprechenden Dokumente mal zu lesen, darf man sich nicht wundern wenn ein wenig Spott aufkommt.
Na dann machen wir das doch mal passend zum Titel: Warnung vor atoi. Bibel sagt:
1 | The atoi() function is subsumed by strtol() but is retained because it |
2 | is used extensively in existing code. If the number is not known to be |
3 | in range, strtol() should be used because atoi() is not required to |
4 | perform any error checking. |
> Seine Frage war nur, wie er die entsprechende Headerdatei namentlich > identifizieren kann, und da hilft kurz gurgeln. Ach so. In solchen Fällen implementiere ich die betreffende Funktion einfach rasch selber, suchen gurkt mich an.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.