malloc() und der cast
-
Kann mir einer der Fans einen echten C-Compiler nennen, der wenn man den void-Zeiger den malloc() liefert, in den Zieltyp-Zeiger castet
dies mit einer Warnung oder einer Fehlermeldung quitiert?
Danke!
-
Warum sollte der Compiler warnen?
bgdnoy schrieb:
Swordfish schrieb:
IMVHO ist die Frage (da wir hier im C-Forum sind) mit "der cast ist schlicht unnötig" zu quittieren.
Aber nur wenn man Tims Variante c verwendet.
bgdnoy schrieb:
PS: richtig lesen.
Nicht böse sein, Süßer, aber ich hab gar nicht dich, sondern den ugga ugga gemeint.
Erstens bin ich kein 'Süßer' - am allerwenigsten für dich, und 2. ist und bleibt der Cast unnötig - egal in welcher Variante.
greetz, Swordfish
-
Du steigst auch auf jeden Blödsinn ein, oder? Wie alt bist du eigentlich?
-
bgdnoy schrieb:
Du steigst auch auf jeden Blödsinn ein, oder? Wie alt bist du eigentlich?
Wenn du nichts zu sagen hast, dann sage bitte nichts.
Es obliegt den Leuten selbst ob sie Fragen beantworten. Das Thema hier ist zB durchaus relevant. Denn es gibt Gruende warum ein Cast Sinnvoll erscheint. Das ist nunmal Fakt. Also ist es legitim darueber zu reden ob es sinnvollere Gruende gibt die dagegen sprechen.
-
Da hast du mich mißverstanden. Wenn ich nicht drüber reden wollte, würde ich's ja nicht lesen. Aber auf welche Weise ich mich über Wichtigtuer lustig mache, wenn sie Unsinn reden, überlaß bitte mir.
Und bitte nimme das "e" vom Ende des Imperativs, das tut mir fast so weh wie greetz, Swordfish.
-
bgdnoy schrieb:
Da hast du mich mißverstanden. Wenn ich nicht drüber reden wollte, würde ich's ja nicht lesen. Aber auf welche Weise ich mich über Wichtigtuer lustig mache, wenn sie Unsinn reden, überlaß bitte mir.
Tut mir leid, aber da ich hier fuer die Ordnung verantwortlich bin geht es mich sehr wohl an ob du trollst. Also unterlass es bitte hier zu trollen.
danke.
-
was gibts da eigentlich zu diskutieren?
einfacher ist besser. punkt.
-
Diskussionen über mich bitte hier fortsetzen.
-
Fabeltier schrieb:
Hallo,
ich hab mal ne Grundsatzfrage zu malloc() und dem casting, welches ich dabei manchmal sehe:
Was ist der Unterschied zwischen a) und b) oder gibt es da keinen - ich glaube bei mir noch nie einen Unterschied bemerkt zu haben?a) ohne cast:
char* pText = NULL; if( (pText = malloc(10 * sizeof(char))) == NULL) return EXIT_FAILURE;
b) mit cast:
char* pText = NULL; if( (pText = (char*)malloc(10 * sizeof(char))) == NULL) return EXIT_FAILURE;
um zur ursprünglichen Frage zu kommen: Die Variante b kann versteckte Fehler vertuschen, die man nur sehr mühsam zu finden sind [1].
Der Grund warum sehr oft ein gecastetes malloc sieht, ist dass viele Autoren (von Büchern, Tutorialen, usw) C Code mit einem C++ Compiler kompilieren und dort muss man den void Pointer casten.
[1] bsp: du schreibst ein Programm, welches nicht automatisch gegen die C Bibliothek gelinkt wird. Du hast es eine eigene Funktion malloc die einen int zurückliefert (und an dieser Stelle sei es eagl, was sie tut) und aus alter Gewohnheit hast du die Variable als char* statt int deklariert. Die Variante a hätte den Fehler gefunden und dir mind. eine Warnung gegeben. Variante b hätte dem Compiler gesagt, "sche.iss drauf, ob's feherhaft ist, tu es einfach ohne zu meckern".
-
Gut, also danke fuer die ausfuehrliche Beantwortung meiner Frage. Ich verstehe das jetzt mal als "Stilfrage" und denke, beide Moeglichkeiten haben ihre Vorteile und Nachteile. Moeglichkeit C gefaellt mir jedoch am besten, danke fuer den Tipp