diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9fc9ce2..7932d4f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -113,6 +113,9 @@ target_compile_options(YYCCommonplace PUBLIC # Order build as UTF-8 in MSVC $<$:/utf-8> + # Order preprocessor conformance mode (fix __VA_OPT__ error in MSVC) + $<$:/Zc:preprocessor> + ) # Fix GCC std::stacktrace link error diff --git a/src/yycc/rust/panic.hpp b/src/yycc/rust/panic.hpp index fcf3a35..ef95b3e 100644 --- a/src/yycc/rust/panic.hpp +++ b/src/yycc/rust/panic.hpp @@ -34,7 +34,7 @@ namespace yycc::rust::panic { * The macro parameters are the message to format and its arguments, following \c std::format syntax. * This macro essentially calls \c std::format internally. */ -#define RS_PANICF(msg, ...) RS_PANIC(std::format(msg __VA_OPT__(, ) __VA_ARGS__)) +#define RS_PANICF(msg, ...) RS_PANIC(std::format(msg __VA_OPT__(,) __VA_ARGS__)) /** * @brief Immediately crashes the entire program like Rust's \c panic! macro. diff --git a/testbench/yycc/num/parse.cpp b/testbench/yycc/num/parse.cpp index 8ce15b3..9f74147 100644 --- a/testbench/yycc/num/parse.cpp +++ b/testbench/yycc/num/parse.cpp @@ -14,7 +14,7 @@ namespace yycctest::num::parse { #define TEST_SUCCESS(type_t, expected_value, string_value, ...) \ { \ std::u8string cache_string(string_value); \ - auto rv = PARSE::parse(cache_string __VA_OPT__(, ) __VA_ARGS__); \ + auto rv = PARSE::parse(cache_string __VA_OPT__(,) __VA_ARGS__); \ ASSERT_TRUE(rv.has_value()); \ EXPECT_EQ(rv.value(), expected_value); \ } @@ -22,7 +22,7 @@ namespace yycctest::num::parse { #define TEST_FAIL(type_t, string_value, ...) \ { \ std::u8string cache_string(string_value); \ - auto rv = PARSE::parse(cache_string __VA_OPT__(, ) __VA_ARGS__); \ + auto rv = PARSE::parse(cache_string __VA_OPT__(,) __VA_ARGS__); \ EXPECT_FALSE(rv.has_value()); \ } diff --git a/testbench/yycc/num/stringify.cpp b/testbench/yycc/num/stringify.cpp index 896d182..e908633 100644 --- a/testbench/yycc/num/stringify.cpp +++ b/testbench/yycc/num/stringify.cpp @@ -11,7 +11,7 @@ namespace yycctest::num::stringify { #define TEST_SUCCESS(type_t, value, string_value, ...) \ { \ type_t cache = value; \ - std::u8string ret = STRINGIFY::stringify(cache __VA_OPT__(, ) __VA_ARGS__); \ + std::u8string ret = STRINGIFY::stringify(cache __VA_OPT__(,) __VA_ARGS__); \ EXPECT_EQ(ret, string_value); \ }