xtd 0.2.0
Loading...
Searching...
No Matches
va_args_comma.h
Go to the documentation of this file.
1
3#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