C++ preprocessor __VA_ARGS__ number of arguments -


Simple question for which I could not find an answer on the net. In the difference logic macros, how to get the number of arguments? I am fine with a preprocessor promoting it, if it is resolved.

If it makes a difference, then I am trying to change the variable number of macro arguments to promote the preprocessor sequence, list or array for further processing. / P>

This is actually a compiler dependent, and is not supported by any standard.

Here you have such a number:

  #define PP_NARG (...) \ PP_NARG _ (___VA_ARGS __, PP_RSEQ_N ()) #define PP_NARG _ (...) \ PP_ARG_N (__VA_ARGS__) #definePP_ARG_N (\ _1, _2, _3, α, _5, _6, _7, _8, _ 9, _10, \ _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ _61, _62, _63 , N, ...) N #definePP_RSEQ_N () \ 63, 62,61,60, \ 59,58,57,56,55, 54,53,52,51,50, \ 49,48,47, 46,45,44,43,42,41,40, \ 39,38,37,36,35,35,34,33,32,31,30,29,28,27,26,25,24, 23,22,21,20, \ 19,18,17,16,15,14,13,12,11,10, \ 9,8, 7,6,5,4,3,2,1,0 / * Some test cases * / PP_NARG (A) - & gt; 1 PP_NARG (A, B) - & gt; 2 PP_NARG (A, B, C) - & gt; 3 PP_NARG (A, B, C, D) - & gt; 4 PP_NARG (A, B, C, D, E) - & gt; 5 PP_NARG (1,2,3,4,5,6,7,8,9,0, 1,2,3,4,5,6,7,8,9,0,12,3,4 , 5,6,7,8,9,0, 1,2,3,4,5,6,7,8,9,0, 1,2,3,4,5,6,7,8,9 , 0, 1,2,3,4,5,6,7,8,9,0, 1,2,3) - & gt; 63  

Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -