Funktionen Returning Non-Integers was besonderes in C?
-
Hallo an alle
Ich arbeite gerade an "The C Programming Language" und habe da mal eine Frage.
In Section 4.2 Functions Returning Non-Integers:
Der Autor erklärt, wie man mit Funktionen umgeht, die was anderes als "int" oder "void" zurückgeben.
Zitat:First, atof itself must declare the type of value it returns, since it is not int.
Nächstes Zitat:
Second, and just important, the calling routine must know that atof returns a non-int value. One way to ensure this is to declare atof explicitly in the calling routine.
int main() { double sum, atof( char [] ); }
Meine Frage: Sind Funktionen, die was anderes als int zurückgeben, so anders zu behandeln?
-
Du solltest alle Funktionen so behandeln, wie es hier vorgeschlagen wird. Es ist zwar möglich, Funktionen die nichts oder int zurück geben implizit durch ihre Benutzung zu deklarieren, aber das gilt als eher unübersichtliches "Feature" der Sprache C.
-
Hallo SeppJ.
Ich weiß jetzt nicht genau, ob ich dich verstehe.
Beispiel, wie ichs sonst immer machen würde://Die .c Datei //Definition von atof double atof( char [] ) { }
// Die .h Datei // Deklaration double atof( char [] );
// Main.c #include "myatof.c" //Hier wird double atof( char [] ) bekannt gemacht int main() { double atof( char [] ); //warum benötige ich das hier, wenn es oben schon deklariert wird durch Header? char arr[5] = {1,2,.,4,5}; double x = atof( arr ); }
Kann das sein, dass du mit unübersichtliches Feature das hier meinst? Ist von dir gepostet worden: https://ideone.com/gG3fJ0
-
Ja, das meine ich und das ist auch, worauf K&R sich beziehen. Mach es weiterhin so, wie du es kennt, mit Deklaration im Header.
Deine Zeile 5 ist eine weitere Deklaration, die bloß nötig wäre, wenn die andere Deklaration im Header nicht wäre.
-
Danke SeppJ.
Ich habs jetzt verstanden.