diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index b1bcd5905459b3a021a2e6f1302d99e37f0f1520..c3f2016060bc391710c9ef25e9bbe1f57afe2361 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -56,6 +56,10 @@
 #include "QtContextKeywords.h"
 #include <cstdio> // for putchar
 
+#ifndef _MSC_VER
+#    define va_copy(dst, src) ((dst) = (src))
+#endif
+
 #define CPLUSPLUS_NO_DEBUG_RULE
 #define MAX_EXPRESSION_DEPTH 100
 
diff --git a/src/shared/cplusplus/TranslationUnit.cpp b/src/shared/cplusplus/TranslationUnit.cpp
index 6b3f77c536d5189b84057a4d3b3fd9d1bb93f802..aac76ebdff1af8c46348b03f6ec8af69297d1e10 100644
--- a/src/shared/cplusplus/TranslationUnit.cpp
+++ b/src/shared/cplusplus/TranslationUnit.cpp
@@ -58,6 +58,10 @@
 #include <cstdarg>
 #include <algorithm>
 
+#ifndef _MSC_VER
+#    define va_copy(dst, src) ((dst) = (src))
+#endif
+
 using namespace CPlusPlus;
 
 TranslationUnit::TranslationUnit(Control *control, const StringLiteral *fileId)