programing

C/C++에서 Mac OS X 고유 코드를 래핑할 매크로

goodcopy 2022. 8. 16. 22:51
반응형

C/C++에서 Mac OS X 고유 코드를 래핑할 매크로

한 C C++ 매크로가 .__APPLE__ ★★★★★★★★★★★★★★★★★」__OSX__알수 있었습니다.__OSX__ 양양양양양에서 한 코드*BSD시스템들.

에서 'Testing(테스트)'이 발견될 수 있습니다.__OSX__하고, 는 이 합니다.__APPLE__

Porting Command Line Unix Tools to Mac OS X」가이드에 기재되어 있습니다.__APPLE__ 추가로 and가가 and__APPLE_CC__그러나 언급은 하지 않는다.__OSX__.

GCC로부터의 이식」가이드에 기재되어 있는 것은, 다음과 같습니다.

  • #ifdef __GNUC__GCC를 사용하다
  • #ifdef __APPLE_CC__Mac OS X の mac mac mac mac mac 。

한 번 말하지만, 에 대해서는 하지 않습니다.__OSX__

Mac OS X 플랫폼 및 XCode 개발 환경에서 C/C++ 프로그램에서 OSX 고유의 코드를 구별하는 데 사용해야 하는 매크로는 무엇입니까?

요?__OSX__ it it it it it it it it it ?*BSD★★★★★★★★★★★★★★★★?

그때 그때 달라.

각 매크로는 다른 의미를 지정합니다.
참조: https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html #//apple_ref/doc/uid/TP40002850-SW13

__APPLE__

이 매크로는 모든 Apple 컴퓨터에서 정의됩니다.

__APPLE_CC__

이 매크로는 컴파일러 버전 번호를 나타내는 정수로 설정됩니다.이를 통해 예를 들어 같은 버전의 GCC를 기반으로 하지만 다른 버그 수정이나 기능을 가진 컴파일러를 구별할 수 있습니다.값이 클수록 컴파일러가 최신임을 나타냅니다.

__OSX__

OS는 OS X의 특정 변종이라고 생각됩니다.

따라서 위의 정의를 사용할 수 있습니다.__APPLE__애플 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.

사용하다

#if defined(__APPLE__) && defined(__MACH__)

Apple 운영체제를 구별하기 위해 사용합니다.

밖에도 '어울리다'를 사용할 수 .TARGET_OS_MAC ★★★★★★★★★★★★★★★★★」TARGET_OS_IPHONEmacOS iOS를 하기 위해 합니다.

완전한 예:

#if defined(__APPLE__) && defined(__MACH__)
    /* Apple OSX and iOS (Darwin). */
#include <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR == 1
    /* iOS in Xcode simulator */

#elif TARGET_OS_IPHONE == 1
    /* iOS */

#elif TARGET_OS_MAC == 1
    /* macOS */

#endif
#endif

'어디서 왔느냐'는 질문에 대해서.":

매크로의 리스트는, 「」( 「이러한 리스트」)를 나타내고 .__MACOSX__ 코멘트(이러한과 같이 주장하고 있습니다__OSX__이것들은 틀렸습니다.OSX 컴파일러에 의해 미리 정의된 매크로는 없지만 특정 프로젝트 Makefiles 및 GNU autoconf와 같은 플랫폼 디텍터 스크립트에 의해 정의될 수 있습니다.

출처 : http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system

업데이트 – 위 링크가 끊어졌습니다.https://web.archive.org/web/20180331065236/http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system#OSXiOSandDarwin 웹 아카이브 버전을 참조하십시오.

> = 2019라는 질문을 접하게 될 분들을 위해, 저는 "Availability(가용성)"라는 헤더가 있다는 것을 발견했습니다.h" 입니다.

이 헤더에서 #defines는 다음과 같습니다.

#define __MAC_10_0            1000
#define __MAC_10_1            1010
#define __MAC_10_2            1020
#define __MAC_10_3            1030
#define __MAC_10_4            1040
#define __MAC_10_5            1050
#define __MAC_10_6            1060
#define __MAC_10_7            1070
#define __MAC_10_8            1080
#define __MAC_10_9            1090
#define __MAC_10_10         101000
#define __MAC_10_10_2       101002
#define __MAC_10_10_3       101003
#define __MAC_10_11         101100
#define __MAC_10_11_2       101102

따라서 특정 MacOS 플랫폼에서 컴파일 중인지 알 수 있습니다.

다음은 운영 체제용 매크로 목록입니다.

에 대한 정보가 거의 없다.__OSX__웹에서 확인하실 수 있습니다.그럼 안전할 거야__APPLE__.

저는 평소에__MACH__이걸 위해서.OS X의 초기 버전(아마도 이전 버전)부터 정의되어 있습니다.

http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system#OSXiOSandDarwin 를 참조해 주세요.

#ifdef __APPLE__
#include <TargetConditionals.h>
#if TARGET_OS_MAC
   ...
#endif /* TARGET_OS_MAC */
#endif /* __APPLE__ */

주의:__OSX__적어도 Xcode 9 이후에는 존재하지 않습니다.

또한 주의:#if TARGET_OS_MAC것은 아니다.#ifdef. 항상 정의되지만 macOS가 아닌 경우에는 0이 됩니다.

언급URL : https://stackoverflow.com/questions/2166483/which-macro-to-wrap-mac-os-x-specific-code-in-c-c

반응형