Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengesan Sistem Pengendalian Semasa Penyusunan Prapemproses C?

Bagaimanakah Saya Boleh Mengesan Sistem Pengendalian Semasa Penyusunan Prapemproses C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 07:10:14261semak imbas

How Can I Reliably Detect the Operating System During C Preprocessor Compilation?

Pengesanan Prapemproses Sistem Pengendalian dalam C

Pengesanan sistem pengendalian semasa pemprosesan prapemproses adalah penting untuk menulis kod C/C merentas platform. Begini cara untuk mencapai ini dengan pasti untuk Mac OS X, iOS, Linux dan Windows:


Kebanyakan penyusun mentakrifkan makro yang mengenal pasti sistem pengendalian. Untuk pengesanan prapemproses, makro yang dipratentukan ini adalah penting. GCC, misalnya, mempunyai senarai komprehensif, yang termasuk:

jika ditakrifkan(WIN32) || ditakrifkan(_WIN32) || ditakrifkan(__WIN32__) || ditakrifkan(__NT__)

// Define something for Windows (32-bit and 64-bit)
#ifdef _WIN64
    // Define something unique for Windows (64-bit only)
#else
    // Define something specific 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 (bridging iOS API into Mac)
#elif TARGET_OS_IPHONE
    // iOS, tvOS, or watchOS device
#elif TARGET_OS_MAC
    // Other Apple platforms
#else
    // Error: Unknown Apple platform
#endif

elif ANDROID

// Handled elsewhere (Android typically conforms to __linux__)

elif linux

// Linux

elif unix

// Unix

elif ditakrifkan(_POSIX_VERSION)

// POSIX

lain

// Error: Unknown compiler

endif

Dengan menggunakan makro ini, anda boleh mengesan dengan pasti sistem pengendalian semasa pemprosesan prapemproses dan menyesuaikan kod anda dengan sewajarnya, memastikan keserasian merentas pelbagai platform.

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

Kenyataan:
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