clang on native Windows produces the warning: In file included from C:\cygwin64\home\bruno\testdir-all-for-msvc\gltests\test-threads-c++.cc:22: ../gllib\threads.h(685,10): warning: keyword is hidden by macro definition [-Wkeyword-macro]
The cause is that in C++ 11 or newer, 'thread_local' is a keyword, and there is no need to redefine it as a macro. This patch fixes it. 2024-08-28 Bruno Haible <br...@clisp.org> threads-h: Don't override the C++ keyword 'thread_local'. * lib/threads.in.h (thread_local): Don't define as a macro in C++ 11 or newer. diff --git a/lib/threads.in.h b/lib/threads.in.h index 4e21fc7628..6a52e7b795 100644 --- a/lib/threads.in.h +++ b/lib/threads.in.h @@ -97,7 +97,9 @@ its expansion ends in a semicolon. */ # undef thread_local #endif -#if !@HAVE_THREADS_H@ || !defined thread_local +#if (!@HAVE_THREADS_H@ || !defined thread_local) \ + && !(defined __cplusplus \ + && (__cplusplus >= 201103L || (defined _MSC_VER && _MSC_VER >= 1900))) # define thread_local _Thread_local #endif /* Define the macro thread_local if and only if it actually works. */