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_IPHONE
macOS 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
'programing' 카테고리의 다른 글
때 제거된다 어떻게 뷰에서 목록 항목을 움직이기에. (0) | 2022.08.16 |
---|---|
Vue.js: 템플릿에서 논리 연산자를 사용하는 방법 (0) | 2022.08.16 |
(Vue) 산출된 속성에서 로컬 스코프 변수의 성능에 미치는 영향 (0) | 2022.08.16 |
왜 CSS는 'npm run dev'와 'npm run build'를 다르게 렌더링합니까? (0) | 2022.08.16 |
(노드:72332) 미처리 약속RejectWarning: 오류: 인수를 직렬화하지 못했습니다. (0) | 2022.08.16 |