diff options
author | Michael D Kinney <michael.d.kinney@intel.com> | 2022-06-21 12:30:07 -0700 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-11-11 05:46:51 +0000 |
commit | 933b4c333c8f9a78280def62bab55eee5a6b2456 (patch) | |
tree | 6cb49f2c21f15226880886323a5805d73a56051c /MdePkg/Include | |
parent | 3182843f3bc92599fa2ed4fd13ffd3f75907fe9e (diff) | |
download | edk2-933b4c333c8f9a78280def62bab55eee5a6b2456.tar.gz edk2-933b4c333c8f9a78280def62bab55eee5a6b2456.tar.bz2 edk2-933b4c333c8f9a78280def62bab55eee5a6b2456.zip |
MdePkg/Include: Update Base.h to improve C++ compatibility
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4134
* Map NULL to nullptr or __null when c++ compiler is used.
* Map STATIC_ASSERT to static_assert when a c++ compiler is used.
* Typecast RETURN_SUCCESS to type RETURN_STATUS to match type used
by all return error/warning status codes. C++ has stricter type
checking and found this inconsistency.
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Diffstat (limited to 'MdePkg/Include')
-rw-r--r-- | MdePkg/Include/Base.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h index d19ddfe4bb..d209e6de28 100644 --- a/MdePkg/Include/Base.h +++ b/MdePkg/Include/Base.h @@ -309,7 +309,15 @@ struct _LIST_ENTRY { ///
/// NULL pointer (VOID *)
///
+#if defined (__cplusplus)
+ #if defined (_MSC_EXTENSIONS)
+#define NULL nullptr
+ #else
+#define NULL __null
+ #endif
+#else
#define NULL ((VOID *) 0)
+#endif
//
// Null character
@@ -760,7 +768,7 @@ typedef UINTN *BASE_LIST; **/
#ifdef MDE_CPU_EBC
#define STATIC_ASSERT(Expression, Message)
-#elif defined (_MSC_EXTENSIONS)
+#elif defined (_MSC_EXTENSIONS) || defined (__cplusplus)
#define STATIC_ASSERT static_assert
#else
#define STATIC_ASSERT _Static_assert
@@ -959,7 +967,7 @@ typedef UINTN RETURN_STATUS; ///
/// The operation completed successfully.
///
-#define RETURN_SUCCESS 0
+#define RETURN_SUCCESS (RETURN_STATUS)(0)
///
/// The image failed to load.
|