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>
This commit is contained in:
Michael D Kinney 2022-06-21 12:30:07 -07:00 committed by mergify[bot]
parent 3182843f3b
commit 933b4c333c
1 changed files with 10 additions and 2 deletions

View File

@ -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.