Heim >Backend-Entwicklung >C++ >Wie kann ich das Betriebssystem im C-Präprozessor für die plattformübergreifende Entwicklung erkennen?

Wie kann ich das Betriebssystem im C-Präprozessor für die plattformübergreifende Entwicklung erkennen?

DDD
DDDOriginal
2024-12-26 01:34:09864Durchsuche

How Can I Detect the Operating System in the C Preprocessor for Cross-Platform Development?

Erkennen von Betriebssystemen im C-Präprozessor für die plattformübergreifende Entwicklung

Die Bestimmung des zugrunde liegenden Betriebssystems während der Präprozessorphase ist für die plattformübergreifende Entwicklung von entscheidender Bedeutung. Plattform-C/C-Code. Glücklicherweise definieren die meisten Compiler spezifische Makros, die eine zuverlässige Erkennung ermöglichen.

GCC- und Clang-Makros

GCC- und Clang-Compiler bieten eine umfassende Liste vordefinierter Makros, die verwendet werden können zur Betriebssystemidentifikation:

  • Für Windows: WIN32, _WIN32, WIN32__, __NT
  • Für macOS: APPLE
  • Für Linux: Linux
  • Für Unix: Unix
  • Für POSIX: _POSIX_VERSION

Beispiel für GCC

Hier ist ein Beispiel dafür, wie diese Makros in einer GCC-Kompilierung verwendet werden können:

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
  // Define something for Windows (32-bit and 64-bit)
  #ifdef _WIN64
    // Define something for Windows (64-bit only)
  #else
    // Define something for Windows (32-bit only)
  #endif
#elif __APPLE__
  #include <TargetConditionals.h>
  #if TARGET_IPHONE_SIMULATOR
    // iOS, tvOS, or watchOS Simulator
  #elif TARGET_OS_MACCATALYST
    // Mac's Catalyst (ports iOS API into Mac, like UIKit).
  #elif TARGET_OS_IPHONE
    // iOS, tvOS, or watchOS device
  #elif TARGET_OS_MAC
    // Other kinds of Apple platforms
  #else
    #error "Unknown Apple platform"
  #endif
#else
  #error "Unknown compiler"
#endif

Wichtig Überlegungen

  • Die Verfügbarkeit vordefinierter Makros variiert je nach verwendetem Compiler.
  • Es wird empfohlen, Makroschutzvorrichtungen einzusetzen, um das mehrfache Einschließen von Headern zu vermeiden.
  • _WIN32 (ohne Unterstrich) ermöglicht IDEs, die entsprechenden Codeabschnitte für Windows-Plattformen hervorzuheben.
  • Windows x64-Compiler definieren immer noch _WIN32, sodass es als gemeinsame Basis verwendet werden kann und dann ein inneres _WIN64 #ifdef für 64-Bit-spezifische Definitionen verwendet.

Das obige ist der detaillierte Inhalt vonWie kann ich das Betriebssystem im C-Präprozessor für die plattformübergreifende Entwicklung erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn