xtd 0.2.0
va_args_comma.h
Go to the documentation of this file.
1 #pragma once
4 #if !defined(__VA_ARGS_COMMA__)
5 # define __VA_ARGS_COMMA__(...) __GET_VA_ARGS_COMMA_ARG__( , __VA_ARGS__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__,)
6 # define __GET_VA_ARGS_COMMA_ARG__(start, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, end,...) end
7 # define __COMMA__ ,
8 #endif
9 
10 // To use with 0 argument, we need to force zero variadic macro on other compiler than gcc :
11 //
12 // clang : add_compile_options(-Wno-gnu-zero-variadic-macro-arguments) : Work
13 // msvc : add_compile_options(/wd5105 /Zc:preprocessor) : Not work !!!!!!
14 // Not working well with windows specific include... error on some macro like _VARIANT_BOOL... with bad definition...
15 // See https://docs.microsoft.com/en-us/cpp/preprocessor/preprocessor-experimental-overview?view=msvc-160
16 //
17 // #if !defined(__VA_ARGS_COMMA__)
18 //# define __VA_ARGS_COMMA__(...) __GET_VA_ARGS_COMMA_ARG__( , ##__VA_ARGS__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__, __COMMA__,)
19 //# define __GET_VA_ARGS_COMMA_ARG__(start, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, end,...) end
20 //# define __COMMA__ ,
21 //#endif