define LIBTEST_PAL_STDLIB_CALLBACK_CALLING_CONVENTION

From liblfds.org
Jump to navigation Jump to search

Source File

└───test_and_benchmark
    └───libtest
        └───inc
            └───libtest
                    libtest_porting_abstraction_layer_compiler.h

Define

#define LIBTEST_PAL_STDLIB_CALLBACK_CALLING_CONVENTION  [calling convention]

Example

#if( defined _WIN32 && define KERNEL_BUILD && defined _M_IX86 )

  // TRD : bloody x86 on MSVC...
  #define LIBTEST_PAL_STDLIB_CALLBACK_CALLING_CONVENTION  __cdecl

#endif

Optionality

This define is mandatory and the library cannot compile if in the cases where it is needed, it is not set. If the define is not required, it must be defined as empty, rather than omitted.

Notes

Winner of "World's Most Annoying Abstraction Define" award.

When building for and only for Windows kernel targetting x86, callback functions passed to standard library functions such as qsort or bsearch have a calling convention which differs to the build default, which breaks compilation. This has to be handled, and that in turns means this define has to exist. It is defined as empty on all platforms except for Windows kernel x86.

This define will go away when the vestigal use of qsort and bsearch (there's one use of each) are removed from libtest.

See Also