Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3f28bd7

Browse files
committed
Add work-around for VA_ARGS_NARGS() on MSVC.
The previous coding of VA_ARGS_NARGS() always returned 1 on VisualStudio, because it treats __VA_ARGS__ as a single token unless you jumpthrough extra hoops. Newer compilers have an option to fix that. Add acomment about that so that we can remember to clean this up in thefuture when our minimum MSVC version advances.Author: Victor Spirin <v.spirin@postgrespro.ru>Reviewed-by: Thomas Munro <thomas.munro@gmail.com>Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>Reviewed-by: Michael Paquier <michael@paquier.xyz>Discussion:https://postgr.es/m/f450fc57-a147-19d0-e50c-33571c52cc13%40postgrespro.ru
1 parent01be9d4 commit3f28bd7

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

‎src/include/c.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,25 @@
324324
* pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up
325325
* the call so that that is the appropriate one of the list of constants.
326326
* This idea is due to Laurent Deniau.
327+
*
328+
* MSVC has an implementation of __VA_ARGS__ that doesn't conform to the
329+
* standard unless you use the /Zc:preprocessor compiler flag, but that
330+
* isn't available before Visual Studio 2019. For now, use a different
331+
* definition that also works on older compilers.
327332
*/
333+
#ifdef_MSC_VER
334+
#defineEXPAND(args) args
335+
#defineVA_ARGS_NARGS(...) \
336+
VA_ARGS_NARGS_ EXPAND((__VA_ARGS__, \
337+
63,62,61,60, \
338+
59,58,57,56,55,54,53,52,51,50, \
339+
49,48,47,46,45,44,43,42,41,40, \
340+
39,38,37,36,35,34,33,32,31,30, \
341+
29,28,27,26,25,24,23,22,21,20, \
342+
19,18,17,16,15,14,13,12,11,10, \
343+
9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
344+
#else
345+
328346
#defineVA_ARGS_NARGS(...) \
329347
VA_ARGS_NARGS_(__VA_ARGS__, \
330348
63,62,61,60, \
@@ -334,6 +352,8 @@
334352
29,28,27,26,25,24,23,22,21,20, \
335353
19,18,17,16,15,14,13,12,11,10, \
336354
9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
355+
#endif
356+
337357
#defineVA_ARGS_NARGS_( \
338358
_01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \
339359
_11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp