From 442affc9bf76e696d5afd5c8cf92a5d58408fe05 Mon Sep 17 00:00:00 2001 From: Scott Graham Date: Fri, 27 Oct 2023 20:37:46 -0700 Subject: [PATCH] Add support for i64 and ui64 literal suffixes on Windows Used by MSVC's stdint.h, etc. --- src/tokenize.c | 8 ++++++++ test/literal.c | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/tokenize.c b/src/tokenize.c index c86b9c3..c4d3eed 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -344,6 +344,14 @@ static bool convert_pp_int(Token* tok) { startswith(p, "uLL") || startswith(p, "ull")) { p += 3; l = u = true; +#if X64WIN + } else if (startswith(p, "i64")) { + p += 3; + l = true; + } else if (startswith(p, "ui64")) { + p += 4; + l = u = true; +#endif } else if (!strncasecmp(p, "lu", 2) || !strncasecmp(p, "ul", 2)) { p += 2; l = u = true; diff --git a/test/literal.c b/test/literal.c index d10902e..31c2f45 100644 --- a/test/literal.c +++ b/test/literal.c @@ -24,6 +24,12 @@ int main() { ASSERT(8, sizeof(0LL)); ASSERT(8, sizeof(0LLU)); ASSERT(8, sizeof(0Ull)); +#ifdef _WIN64 + ASSERT(8, sizeof(0ui64)); + ASSERT(8, sizeof(0i64)); + ASSERT(8, sizeof(1ui64)); + ASSERT(8, sizeof(1i64)); +#endif ASSERT(8, sizeof(0l)); ASSERT(8, sizeof(0ll)); ASSERT(8, sizeof(0x0L));