sizeof() liefert immer 0
-
d'oh ja natürlich. Ich schiebe es auf Matlab
-
printf("sizeof: %i\n",sizeof(test));
Da erhalte ich als ausgabe 0.
Benutze VC++.
-
Selbst beim kompilieren erhalte ich Folgende Warnung:
warning C4034: sizeof returns 0
-
Sosoo schrieb:
printf("sizeof: %i\n",sizeof(test));
Da erhalte ich als ausgabe 0.
Benutze VC++.Ich erhalte 20. Benutze den GCC.
-
Also würde trotzdem gerne mal geklärt haben warum sizeof() 0 zurück liefert...
-
Sosoo schrieb:
Also würde trotzdem gerne mal geklärt haben warum sizeof() 0 zurück liefert...
Das musst du schon MS fragen. Ich hab 3 andere Compiler getestet, und die schaffen das.
-
VC++2008 liefert 5 beim Ursprungscode.
-
GCC 4.4 macht auch alles richtig. (Ausgabe ist 5)
-
Sosoo schrieb:
Also würde trotzdem gerne mal geklärt haben warum sizeof() 0 zurück liefert...
Schalte mal alle Optimierungen aus!
-
Sosoo schrieb:
printf("sizeof: %i\n",sizeof(test));
Da erhalte ich als ausgabe 0.
Benutze VC++.Ich benutze den auch und erhalte 20.
:p
-
Wann kann überhaupt ein Objekt die Größe 0 haben? Schauen wir uns die Hilfe zu der Fehlermeldung an:
The sizeof operator is applied to an operand of size zero (an empty structure, union, class, or enumerated type, or type void).
Nicht sehr hilfreich. Was kann es noch sein? Wie wärs mit extern:
extern char* test[]; sizeof(test) /* ergibt 0 und beim VC die Warnung C4034 "sizeof returns 0" */
In jedem Fall ist der gepostete Code nicht der richtige Code.
-
Ja so wie es aussieht liegt es an dem "extern" habe nicht gewusst das das wichtig ist deswegen habe ich den Code nicht komplett gepostet.
-
Bashar schrieb:
extern char* test[]; sizeof(test) /* ergibt 0 und beim VC die Warnung C4034 "sizeof returns 0" */
Hmm. Kann man beim VC diese Warnung mit irgendwelchen Schaltern zu einem Fehler machen? Andere Compiler scheinen sich einig, dass man in dem Fall besser gar keine Aussage über die Grösse machen sollte, zB:
gcc: Fehler: Ungültige Anwendung von »sizeof« auf unvollständigen Typen »char *[]« tcc: sizeof applied to an incomplete type
Gibt's denn Fälle, wo man eine solche Interpretation der Sprache haben will?
-
µngbd schrieb:
Kann man beim VC diese Warnung mit irgendwelchen Schaltern zu einem Fehler machen?
Ja.
#pragma warning(error:4043) //Warning: sizeof returns 0
in die "msbugfix.hpp"