Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengesan Sistem Pengendalian dalam Prapemproses C untuk Pembangunan Merentas Platform?

Bagaimanakah Saya Boleh Mengesan Sistem Pengendalian dalam Prapemproses C untuk Pembangunan Merentas Platform?

DDD
Lepaskan: 2024-12-26 01:34:09
asal
853 orang telah melayarinya

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

Mengesan Sistem Pengendalian dalam Prapemproses C untuk Pembangunan Merentas Platform

Menentukan sistem pengendalian asas semasa peringkat prapemproses adalah penting untuk merentas- kod C/C platform. Nasib baik, kebanyakan penyusun mentakrifkan makro tertentu yang membolehkan pengesanan yang boleh dipercayai.

GCC dan Makro Clang

Penyusun GCC dan Clang menyediakan senarai komprehensif makro yang dipratentukan yang boleh digunakan untuk pengenalan OS:

  • Untuk Windows: WIN32, _WIN32, WIN32__, __NT
  • Untuk macOS: APPLE
  • Untuk Linux: linux
  • Untuk Unix: unix
  • Untuk POSIX: _POSIX_VERSION

Contoh untuk GCC

Berikut ialah contoh bagaimana makro ini boleh digunakan dalam GCC kompilasi:

#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
Salin selepas log masuk

Pertimbangan Penting

  • Ketersediaan makro yang dipratentukan berbeza-beza bergantung pada pengkompil yang digunakan.
  • Adalah disyorkan untuk menggunakan pengawal makro untuk mengelakkan kemasukan berbilang pengepala.
  • _WIN32 (tanpa garis bawah) membenarkan IDE menyerlahkan bahagian kod yang sesuai untuk platform Windows.
  • Pengkompil Windows x64 masih mentakrifkan _WIN32, jadi ia boleh digunakan sebagai asas biasa dan kemudian menggunakan _WIN64 #ifdef dalaman untuk 64- takrifan khusus bit.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Sistem Pengendalian dalam Prapemproses C untuk Pembangunan Merentas Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan