Wofür steht _In_?



  • Aber eigentlich ist FuncCompare ein Zeiger auf eine Funktion.

    typedef int func_compare_t(void *, const void *, const void *);
    void qsort_s(void *Base, rsize_t NumOfElements, rsize_t SizeOfElements,
                 func_compare_t *FuncCompare, void *Context);
    


  • Zur Lesbarkeit: Die Standardlibrary darf keine Bezeichner wie Base verwenden, sondern muss auf reservierte Bezeichner wie _Base ausweichen. Ich nehme an (hoffe), dass die Entwickler der Standardlibrary das in normal lesbarer Schreibweise entwickeln und dann automatisch konvertieren, aber man weiß ja nie ...



  • Bashar schrieb:

    Zur Lesbarkeit: Die Standardlibrary darf keine Bezeichner wie Base verwenden, sondern muss auf reservierte Bezeichner wie _Base ausweichen.

    Warum?



  • #define Base "ich darf das so definieren, wenn es mir Spaß macht"
    /* #define _Base "oops, reservierter Bezeichner" */
    #include <stdlib.h>
    


  • Bashar schrieb:

    #define Base "ich darf das so definieren, wenn es mir Spaß macht"
    /* #define _Base "oops, reservierter Bezeichner" */
    #include <stdlib.h>
    

    Autsch. Das muß ich gelten lassen.



  • Bashar schrieb:

    Zur Lesbarkeit: Die Standardlibrary darf keine Bezeichner wie Base verwenden, sondern muss auf reservierte Bezeichner wie _Base ausweichen. Ich nehme an (hoffe), dass die Entwickler der Standardlibrary das in normal lesbarer Schreibweise entwickeln und dann automatisch konvertieren, aber man weiß ja nie ...

    Ja, das stimmt schon.

    typedef int func_compare_t(void *, const void *, const void *);
    void qsort_s(void *_Base, rsize_t _NumOfElements, rsize_t _SizeOfElements,
                 func_compare_t *_FuncCompare, void *_Context);
    

    Ok, das _CRTIMP und _cdecl hat sicher auch einen Sinn (hätte man aber trotzdem besser benennen können :))



  • rüdiger schrieb:

    Ok, das _CRTIMP und _cdecl hat sicher auch einen Sinn (hätte man aber trotzdem besser benennen können :))

    __cdecl ist eine Aufrufkonvention. Wie willst du die denn anders bennen oder was meinst du?

    @all
    Sry, dass ist aus dem VC 9.0 Include-Verzeichnis. Wahrscheinlich ist es in der Tat ein define auf nichts, dass nur angibt, was mit dem Parameter passiert.



  • FrEEzE2046 schrieb:

    @all
    Sry, dass ist aus dem VC 9.0 Include-Verzeichnis. Wahrscheinlich ist es in der Tat ein define auf nichts, dass nur angibt, was mit dem Parameter passiert.

    Du findest die Definition in sal.h, und sie sieht so aus:

    #define _In_                           _Pre1_impl_(_$notnull) _Deref_pre2_impl_(_$valid, _$readaccess)
    

    Jetzt alles klar? 😉



  • _matze schrieb:

    #define _In_                           _Pre1_impl_(_$notnull) _Deref_pre2_impl_(_$valid, _$readaccess)
    

    Jetzt alles klar? 😉

    Ja, dass habe ich auch schon gefunden. Hat mir natürlich die absolute Erleuchtung gebracht 😉



  • Da _Pre1_impl_ und _Deref_pre2_impl_ auf nix definiert sind, sollte es dich auch halbwegs erleuchten. 😉


Anmelden zum Antworten