sizeof(char[34]); - legales C?
-
ich möchte wissen ob der Ausdruck
sizeof(char[34]);
legales C ist
ist dem Compiler damit klar das ich die Größe eines char Arrays mit 24 einträgen wissen will?
irgendwie komisch - habs aber unbewußt so eingetippt und es hat funktioniert
- vielleicht hab ich mir da ja auch irgendwo abgeschaut - ist mir jedenfalls erst gerade aufgefallen
-
Ich frage mich gerade ernsthaft wo man ein solches Konstrukt benötigen könnte
-
typedef struct { unsigned char flags; // SELECTED | DIRTY char name[32]; // char parentName[32]; // float rotation[3]; // local reference matrix float position[3]; unsigned short numKeyFramesRot; // unsigned short numKeyFramesTrans; // ms3d_keyframe_rot_t *keyFramesRot; // local animation matrices ms3d_keyframe_pos_t *keyFramesTrans; // local animation matrices } ms3d_joint_t PACK_STRUCT; ... fread(&tmp->Jointbuffer[i].name, sizeof(char[32]), 1, FilePtr); fread(&tmp->Jointbuffer[i].parentName, sizeof(char[32]), 1, FilePtr); fread(&tmp->Jointbuffer[i].rotation, sizeof(float[3]), 1, FilePtr); fread(&tmp->Jointbuffer[i].position, sizeof(float[3]), 1, FilePtr);
-
Man macht es so:
fread(&tmp->Jointbuffer[i].parentName, sizeof(char), 32, FilePtr); fread(&tmp->Jointbuffer[i].rotation, sizeof(float), 3, FilePtr); fread(&tmp->Jointbuffer[i].position, sizeof(float), 3, FilePtr);
sizeof(char[3]) macht keinen Sinn.
-
kennt das wiedereinmal nur mein MS Compiler?
wie war das mit Sinn gemeint?
a) es ist syntaktisch falsch
b) es ist unschön
-
Vertexwahn schrieb:
kennt das wiedereinmal nur mein MS Compiler?
wie war das mit Sinn gemeint?
a) es ist syntaktisch falsch
b) es ist unschönb) es ist unschön.
-
sizeof hat 2 Syntaxen(?):
sizeof-expression:
"sizeof" expression
| "sizeof" "(" type ")"
;Da char[34] ein Typ ist, trifft die zweite Regel zu. Warum auch nicht, es wär ja ziemlich schwachsinnig vom Compiler, Zusatzaufwand zu treiben, nur um unsinnigen (aber nicht fehlerträchtigen) Code anzumeckern.