| // Protocol Buffers - Google's data interchange format |
| // Copyright 2025 Google LLC. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| |
| // Push and undef macros from the OS that may conflict with protobuf's |
| // generated symbols. |
| |
| // noreturn is defined as a macro in C's stdnoreturn.h |
| #ifdef noreturn |
| #define PROTOBUF_DID_UNDEF_noreturn |
| #pragma push_macro("noreturn") |
| #undef noreturn |
| #endif |
| |
| // autoheader defines this in some circumstances |
| #ifdef PACKAGE |
| #define PROTOBUF_DID_UNDEF_PACKAGE |
| #pragma push_macro("PACKAGE") |
| #undef PACKAGE |
| #endif |
| |
| // a few common headers define this |
| #ifdef PACKED |
| #define PROTOBUF_DID_UNDEF_PACKED |
| #pragma push_macro("PACKED") |
| #undef PACKED |
| #endif |
| |
| // This is a macro on Windows, macOS, and some variants of GCC. |
| #ifdef DOMAIN |
| #define PROTOBUF_DID_UNDEF_DOMAIN |
| #pragma push_macro("DOMAIN") |
| #undef DOMAIN |
| #endif |
| |
| // linux is a legacy MACRO defined in most popular C++ standards. |
| #ifdef linux |
| #pragma push_macro("linux") |
| #undef linux |
| #define PROTOBUF_DID_UNDEF_LINUX |
| #endif |
| |
| // netdb.h defines this on some platforms. |
| #ifdef NO_DATA |
| #pragma push_macro("NO_DATA") |
| #undef NO_DATA |
| #define PROTOBUF_DID_UNDEF_NO_DATA |
| #endif |
| |
| // Windows declares several inconvenient macro names. We #undef them and then |
| // restore them in port_undef.inc. |
| #ifdef _WIN32 |
| #pragma push_macro("CompareString") |
| #undef CompareString |
| #pragma push_macro("CREATE_NEW") |
| #undef CREATE_NEW |
| #pragma push_macro("DELETE") |
| #undef DELETE |
| #pragma push_macro("DOUBLE_CLICK") |
| #undef DOUBLE_CLICK |
| #pragma push_macro("ERROR") |
| #undef ERROR |
| #pragma push_macro("ERROR_BUSY") |
| #undef ERROR_BUSY |
| #pragma push_macro("ERROR_INSTALL_FAILED") |
| #undef ERROR_INSTALL_FAILED |
| #pragma push_macro("ERROR_NOT_FOUND") |
| #undef ERROR_NOT_FOUND |
| #pragma push_macro("ERROR_RETRY") |
| #undef ERROR_RETRY |
| #pragma push_macro("ERROR_TIMEOUT") |
| #undef ERROR_TIMEOUT |
| #pragma push_macro("GetClassName") |
| #undef GetClassName |
| #pragma push_macro("GetCurrentTime") |
| #undef GetCurrentTime |
| #pragma push_macro("GetMessage") |
| #undef GetMessage |
| #pragma push_macro("GetObject") |
| #undef GetObject |
| #pragma push_macro("IGNORE") |
| #undef IGNORE |
| #pragma push_macro("IN") |
| #undef IN |
| #pragma push_macro("INPUT_KEYBOARD") |
| #undef INPUT_KEYBOARD |
| #pragma push_macro("NO_ERROR") |
| #undef NO_ERROR |
| #pragma push_macro("OUT") |
| #undef OUT |
| #pragma push_macro("OPTIONAL") |
| #undef OPTIONAL |
| #pragma push_macro("min") |
| #undef min |
| #pragma push_macro("max") |
| #undef max |
| #pragma push_macro("NEAR") |
| #undef NEAR |
| #pragma push_macro("NO_DATA") |
| #undef NO_DATA |
| #pragma push_macro("REASON_UNKNOWN") |
| #undef REASON_UNKNOWN |
| #pragma push_macro("SERVICE_DISABLED") |
| #undef SERVICE_DISABLED |
| #pragma push_macro("SERVICE_STOP") |
| #undef SERVICE_STOP |
| #pragma push_macro("SEVERITY_ERROR") |
| #undef SEVERITY_ERROR |
| #pragma push_macro("STATUS_PENDING") |
| #undef STATUS_PENDING |
| #pragma push_macro("STRICT") |
| #undef STRICT |
| #pragma push_macro("timezone") |
| #undef timezone |
| #pragma push_macro("TRUE") |
| #undef TRUE |
| #pragma push_macro("FALSE") |
| #undef FALSE |
| #endif // _WIN32 |
| |
| #ifdef __APPLE__ |
| // Inconvenient macro names from /usr/include/mach/boolean.h in some macOS SDKs. |
| #pragma push_macro("TRUE") |
| #undef TRUE |
| #pragma push_macro("FALSE") |
| #undef FALSE |
| // Inconvenient macro names from usr/include/sys/syslimits.h in some macOS SDKs. |
| #pragma push_macro("UID_MAX") |
| #undef UID_MAX |
| #pragma push_macro("GID_MAX") |
| #undef GID_MAX |
| // TYPE_BOOL is defined in the MacOS's ConditionalMacros.h. |
| #pragma push_macro("TYPE_BOOL") |
| #undef TYPE_BOOL |
| #endif // __APPLE__ |
| |
| #if defined(ANDROID) || defined(__ANDROID__) |
| // Inconvenient macro names from usr/include/limits.h in some Android NDKs. |
| #pragma push_macro("UID_MAX") |
| #undef UID_MAX |
| #pragma push_macro("GID_MAX") |
| #undef GID_MAX |
| #endif // defined(ANDROID) || defined(__ANDROID__) |
| |
| #if defined(__FreeBSD__) || defined(__OpenBSD__) |
| // Inconvenient macro names from /usr/include/sys/param.h. |
| #pragma push_macro("TRUE") |
| #undef TRUE |
| #pragma push_macro("FALSE") |
| #undef FALSE |
| // Inconvenient macro names from /usr/include/sys/limits.h. |
| #pragma push_macro("UID_MAX") |
| #undef UID_MAX |
| #pragma push_macro("GID_MAX") |
| #undef GID_MAX |
| #endif // defined(__FreeBSD__) || defined(__OpenBSD__) |
| |
| #if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER) |
| // Don't let Objective-C Macros interfere with proto identifiers with the same |
| // name. |
| #pragma push_macro("DEBUG") |
| #undef DEBUG |
| #endif // defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER) |