struct array init schlägt noch fehl



  • lippoliv schrieb:

    struct tbl_info myTblInfo[2][255];
    ZeroMemory( myTblInfo, sizeof(tbl_info)*2*255 );
    

    ansi-c?

    struct tbl_info [2][255];
    memset (myTblInfo, 0, sizeof(myTblInfo));
    

    🙂



  • struct tbl_info myTblInfo[2][255];
    mist, vertippt! so^^ sollte die zeile heissen



  • c-freak schrieb:

    struct tbl_info [2][255];
    memset (myTblInfo, 0, sizeof(myTblInfo));

    🙂

    memset, wie uncool, watch this:

    struct A
    {
        int i;
    };
    
    	struct A a[2][3] = {0};
    


  • ZeroMemory macht auch nichts anderes als memset( ptr, 0, size ); oder?

    Wieso ist es schlechter als memset, ist doch weniger schreibarbeit, dass würde mich mal interessieren...



  • lippoliv schrieb:

    Wieso ist es schlechter als memset, ist doch weniger schreibarbeit, dass würde mich mal interessieren...

    ANSI C?

    Die einfachste Möglichkeit hat aber B.B. gepostet.



  • LordJaxom schrieb:

    Die einfachste Möglichkeit hat aber B.B. gepostet.

    geht noch einfacher, wenn a nicht innerhalb einer funktion steht.

    struct A a[2][3];
    

    🙂



  • vereinfachungs-freak schrieb:

    LordJaxom schrieb:

    Die einfachste Möglichkeit hat aber B.B. gepostet.

    geht noch einfacher, wenn a nicht innerhalb einer funktion steht.

    struct A a[2][3];
    

    🙂

    Globale Variablen sollte man vorsichtig behandeln, irgendwann verlierst du die übersicht, ausserdem ist 'a' und 'A' für variablen eh "beshcissen" ich hoffe es sind nur bsp-Namen xD

    Nein "struct irgendwas nochwas[1][23] = { 0 };" geht auch, aber da gibt eclipse z.B. schon ne Warnung raus... "Declaration to near" oder so... habe ich schon gehört das das nicht gut ist...

    Also ist der memset bzw. ZeroMemory schon ganz recht.



  • lippoliv schrieb:

    Nein "struct irgendwas nochwas[1][23] = { 0 };" geht auch, aber da gibt eclipse z.B. schon ne Warnung raus... "Declaration to near" oder so... habe ich schon gehört das das nicht gut ist...

    Was nimmt Eclipse sich heraus? Warnen soll wenn, dann der Compiler 😃

    Im Ernst, "habe ich schon gehört" ist kein gutes Argument. Wie lautet die Warnung denn genau? Und warnt wirklich das CDT oder doch vielleicht eher der Compiler? Nach Standard C ist diese Form der Initialisierung jedenfalls zulässig und erreicht auch das gewünschte. Warum noch eine potentiell unnötige oder gar (im Fall ZeroMemory) nicht standardkonforme Funktion bemühen?



  • Also ich meine natürlcih den Compiler den Eclipse verwendet, auch viele andere Compiler tun dies, auf einem Hohen Compiler-"Level" natürlich nur...

    Keine ahnung warum dass so ist.



  • lippoliv schrieb:

    "Declaration to near" oder so...

    benutzt du vielleicht einen compiler für DOS oder ein embedded system mit banked memory model? dieses 'near' sieht verdächtig danach aus.
    🙂



  • Also ich habe keine ahnung was du da redest xD

    Mir fällt gerade auf, das er nur in einem Fall gemeckert hat, ich habe diese variante der Deklaration sehr oft drinn...
    keine ahnung wie genau dass wahr...


Anmelden zum Antworten