└───test_and_benchmark └───libtest └───inc └───libtest libtest_porting_abstraction_layer_compiler.h
#define LIBTEST_PAL_STDLIB_CALLBACK_CALLING_CONVENTION [calling convention]
#if( defined _WIN32 && define KERNEL_BUILD && defined _M_IX86 ) // TRD : bloody x86 on MSVC... #define LIBTEST_PAL_STDLIB_CALLBACK_CALLING_CONVENTION __cdecl #endif
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.
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.