GetOpenFileName() und multiselection - Es haut nicht hin



  • Ist doch dasselbe.



  • Das ist Faulenzercode. lStructSize wird zwar richtig inizialisiert, aber der Rest nicht auf 0 gesetzt, aber ok jeder so wie ers gelernt hat.



  • ...... schrieb:

    lStructSize wird zwar richtig inizialisiert, aber der Rest nicht auf 0 gesetzt, aber ok jeder so wie ers gelernt hat.

    Genau. Aber jeder sollte auch das, was er gelernt hat, bei Gelegenheit überprüfen.

    😉


  • Mod

    ...... schrieb:

    Das ist Faulenzercode. lStructSize wird zwar richtig inizialisiert, aber der Rest nicht auf 0 gesetzt, aber ok jeder so wie ers gelernt hat.

    Deine Aussage ist falsch!
    Ich kann mich dem Rat vom MFK nur anschließen!



  • Du hast das hier vergessen :

    WNDPROC* g_lpfnDialogProc =NULL;



  • Martin Richter schrieb:

    ...... schrieb:

    Das ist Faulenzercode. lStructSize wird zwar richtig inizialisiert, aber der Rest nicht auf 0 gesetzt, aber ok jeder so wie ers gelernt hat.

    Deine Aussage ist falsch!
    Ich kann mich dem Rat vom MFK nur anschließen!

    Bist Du dir sicher?

    Das da:

    OPENFILENAME openFileName = { sizeof(OPENFILENAME) };
    

    definiert offensichtlich eine lokale Variable. Ich kann mich nicht daran erinnern, daß der Standard vorschreibt, daß lokale Variablen vom Compiler mit 0 initialisiert werden müssen.

    mfg Martin



  • Der Thread ist über ein Jahr alt.

    Ich habe ich nur den C++-Standard (n3290) - ein Auszug aus 8.5.1 (7)

    If there are fewer initializer-clauses in the list than there are members in the aggregate, then each member
    not explicitly initialized shall be initialized from an empty initializer list (8.5.4). [ Example:
    struct S { int a; const char* b; int c; };
    S ss = { 1, "asdf" };
    initializes ss.a with 1, ss.b with "asdf", and ss.c with the value of an expression of the form int(), that
    is, 0. —end example ]

    -> vom Standard gedeckt.



  • Fällt mir gerade erst auf:
    Ich habe hier
    -> Hier habe ich
    -> Ich habe ich
    😮



  • Thorgrim schrieb:

    Der Thread ist über ein Jahr alt.

    Ich habe ich nur den C++-Standard (n3290) - ein Auszug aus 8.5.1 (7)

    If there are fewer initializer-clauses in the list than there are members in the aggregate, then each member
    not explicitly initialized shall be initialized from an empty initializer list (8.5.4). [ Example:
    struct S { int a; const char* b; int c; };
    S ss = { 1, "asdf" };
    initializes ss.a with 1, ss.b with "asdf", and ss.c with the value of an expression of the form int(), that
    is, 0. —end example ]

    -> vom Standard gedeckt.

    Wir sind aber hier im WinAPI-unterforum und von C++ war bisher nicht die Rede.

    mfg Martin



  • Naja, im C99-Draft (6.7.8)

    21 If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.

    Und komm' jetzt bitte nicht damit, dass dies C99 ist 😃 (einen C89-Draft habe ich nicht gefunden, habe aber auch nicht sonderlich lange gesucht).


Anmelden zum Antworten