mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 14:34:57 +08:00
[PSDK] Improve the DECLSPEC_NOINITALL definition (#8438)
Addendum to commit 73b54ce2a6.
Conditionally define it on the `_MSC_VER >= 1915, and add the other
`MIDL_PASS` and co. guard checks as in the official Windows PSDK.
Additionally, no-op the define for Clang to silence the following
warnings:
```
sdk\include\ddk\ntddk.h(2050,35): warning: __declspec attribute 'no_init_all' is not supported [-Wignored-attributes]
sdk\include\psdk\ntdef.h(40,95): note: expanded from macro 'DECLSPEC_NOINITALL'
```
Granted, this may be due to the fact our GitHub actions currently use
Clang 13.0.1:
```
-- The C compiler identification is Clang 13.0.1 with MSVC-like command-line
-- The CXX compiler identification is Clang 13.0.1 with MSVC-like command-line
```
while support for `no_init_all` may have been added for Clang 22.0.0,
if https://clang.llvm.org/docs/AttributeReference.html#no-init-all is correct.
(See PR https://github.com/llvm/llvm-project/pull/116847 )
This commit is contained in:
@@ -39,7 +39,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef DECLSPEC_NOINITALL
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(_MSC_VER) && (!defined(__clang__) || (__clang_major__ >= 22)) && \
|
||||
(_MSC_VER >= 1915) && !defined(MIDL_PASS) && !defined(SORTPP_PASS) && !defined(RC_INVOKED)
|
||||
#define DECLSPEC_NOINITALL __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop))
|
||||
#else
|
||||
#define DECLSPEC_NOINITALL
|
||||
|
||||
@@ -57,7 +57,8 @@
|
||||
#endif
|
||||
|
||||
#ifndef DECLSPEC_NOINITALL
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(_MSC_VER) && (!defined(__clang__) || (__clang_major__ >= 22)) && \
|
||||
(_MSC_VER >= 1915) && !defined(MIDL_PASS) && !defined(SORTPP_PASS) && !defined(RC_INVOKED)
|
||||
#define DECLSPEC_NOINITALL __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop))
|
||||
#else
|
||||
#define DECLSPEC_NOINITALL
|
||||
|
||||
Reference in New Issue
Block a user