Funktion bekommt nicht die Werte, die ich übergebe



  • Hallo zusammen,

    ich habe folgendes Problem. Und zwar habe ich zwei Dateien: eine a.c und eine b.c, die a.c includiert b.h, soweit so gut.

    In der a.c Datei wird folgende Funktion aufgerufen und diese befindet sich in b.c

    S_do_something( cstOne );
    

    cstArrCntOne wird wie folgt in b definiert:

    b.h

    typedef struct {
      UInt intA;
      UInt intB;
    } ArStruct;
    
    extern CONSTANT ArStruct cstOne;
    

    b.c

    CONSTANT ArrayCountStruct cstOne = { 1, 1 };
    

    Wenn ich jetzt einen Breakpoint in meine S_do_something Funktion setze, dann zeigt er mir als Argument, dass er bekommt ein ArStruct an, aber mit den Werten 0, 0.

    Weiss jemand, woran das liegen kann?

    Grüße Nils



  • Nils__ schrieb:

    extern CONSTANT ArStruct cstOne;
    
    CONSTANT ArrayCountStruct cstOne = { 1, 1 };
    

    Vergleich einfach mal die Datentypen, die du hier verwendet hast (daß sich der Compiler darüber nicht beschwert hat 😕 ).

    Außerdem besteht noch die Möglichkeit, daß du eine gleichnamige Variable lokal definiert hast.



  • ok sorry, aber da hatte ich ein copy and paste fehler gemacht (aus der alten datei). heissen natürlich beide

    ArStruct

    jetzt hab ich das CONSTANT einfach weggemacht und es funktioniert, woran kann denn sowas liegen?

    #define CONSTANT
    


  • gibt es denn compiler, die kein CONSTANT können und da was anderes draus machen?



  • nils__ schrieb:

    gibt es denn compiler, die kein CONSTANT können und da was anderes draus machen?

    normalerweise nimmt man dafür 'const' (alles kleinbuchstaben). dein CONSTANT ist sicher irgend so'n '#define' ...


Anmelden zum Antworten