Verständnisproblem mit Makros



  • Hallo!

    Ich nutze die API eines Programmherstellers um bei verscheidnene Dingen keine Speicherlecks zu verursachen

    Damit ich nicht immer den vollen Namen schreiben muß habe ich mir dafür Makros definiert.

    z.B.

    #define FREE(ptr) myFunTab->e7cs->cc_free(ptr)

    Dieses Makro soll in meiner Typedefs.h stehen und diese wird von jeder Lib mit #include angezogen.

    Was mich nun wundert ist, daß alle Makros aus der Typedefs.h anstandslos klappen, außer diesem.
    Schreibe ich das Makro direkt in die entsprechende Lib, dann kann der Präprozessor das korrekt auflösen.

    Hat wer eine Idee woran das liegen kann?

    Ciao

    OkkaPapa



  • Wenn du verraten würdest, wie du das Makro benutzt, und wie die Fehlermeldung lautet, dann könnte man dir vielleicht sogar helfen.



  • MFK schrieb:

    Wenn du verraten würdest, wie du das Makro benutzt, und wie die Fehlermeldung lautet, dann könnte man dir vielleicht sogar helfen.

    Sorry...

    Also hier nachgeliefert:

    irgendwann allokiere ich Speicher und habe einen pointer drauf: mem

    mit

    FREE(mem);

    und dem #define in der Lib expandiert der Compiler das korrekt:

    myFunTab->e7cs->cc_free(mem);

    Steht das #define in der Typedefs.h, dann steht dort nach dem expandieren

    FREE(mem);

    und der Compiler meckert:

    implicit declaration of function ‘FREE’

    Was mich eben wundert ist, daß es mit anderen Makros anstandslos klappt...



  • OkkaPapa schrieb:

    implicit declaration of function ‘FREE’

    Dann ist an dieser Stelle dein Makro nicht definiert.

    Mögliche Ursachen:
    - Typedefs.h nicht eingebunden
    - die falsche Typedefs.h eingebunden
    - irgendwo vorher steht #undef FREE
    - kaputte Include-Guards
    - ...



  • MFK schrieb:

    Mögliche Ursachen:
    - die falsche Typedefs.h eingebunden
    - ...

    Das wars... Habe in den ganzen Libs beim includieren der Typedefs.h immer _exakt_ den gleichen Tippfehler gemacht und dann existiert diese auch noch mit fast identischem Inhalt...

    Da muß man erst mal drauf kommen 😡


Anmelden zum Antworten