2011-11-06 15 views
5

Czy istnieje predefiniowane makro C do wykrywania wersji systemu OS X? Wiem, że istnieją: __APPLE__ i __MACH__, ale są to pliki binarne. Czy jest konkretna wartość dla __APPLE_CC__, która wskazuje Lion?C makro dla wykrywania wersji OS X (lew czy nie)?

W szczególności Lion dodał definicję getline() do <stdio.h> w Lion i dobrze byłoby móc wykryć, czy kod kompilował się na Lionie czy nie, aby obejść błędy kompilacji.

W szczególności mam tu na myśli budowanie kodu C Uniksa w Bashu (poza XCode).

+0

* Kompilowanie * włączone lub * uruchamianie * na Lwie? –

Odpowiedz

5

Makra Availability.h umożliwiają sprawdzenie zależności wersji podczas kompilacji i wykonywania. Zobacz dyskusję here.

3

Przyjazd /usr/include/AvailabilityMacros.h - zawiera makra, takie jak:

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER DEPRECATED_ATTRIBUTE 
#else 
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER 
#endif 

natknąłem tych rzeczy, ponieważ „OpenSSL/sha1.h” został slathered z „przestarzałe” atrybuty Lion, więc kompilacji git dostaje ostrzeżenia w bród.