Forum: Mikrocontroller und Digitale Elektronik Warnung atoi


von Andy F. (maulfisch) Benutzerseite


Lesenswert?

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?

von Benedikt K. (benedikt)


Lesenswert?

Das müsste stdlib.h sein.

von Gast (Gast)


Lesenswert?

Suchmaschine "atoi" und oh Wunder was bekommt man da nur für Ergebnisse 
...

War das zu schwer?

von Olli R. (omr) Benutzerseite


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von ... (Gast)


Lesenswert?

Oder man schaut hier nach:

http://cplusplus.com

von Olli R. (omr) Benutzerseite


Lesenswert?

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.

von Fabi (Gast)


Lesenswert?

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

von Mark B. (markbrandis)


Lesenswert?

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

von oldschool (Gast)


Lesenswert?

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.

von Olli R. (omr) Benutzerseite


Lesenswert?

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.

von Fabi (Gast)


Lesenswert?

Mal was anderes... Ich glaub nicht, dass dieses Gelaber dem 
Fragensteller in irgendeiner weise hilft...

von Olli R. (omr) Benutzerseite


Lesenswert?

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.

von Fabi (Gast)


Lesenswert?

g

von Dominique G. (dgoersch)


Lesenswert?

Olli R. schrieb:
> Nein, das siehst Du falsch. Andy ist damit teamfaehig.

YMMD!

von oldschool (Gast)


Lesenswert?

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".

von Karl H. (kbuchegg)


Lesenswert?

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.

von Johnny (Gast)


Lesenswert?

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>

von Olli R. (omr) Benutzerseite


Lesenswert?

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.

von holger (Gast)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

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.

von Johnny (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.