2014-04-04 47 views
1

在iOS和OS X SDK中,哪些架構值定義在哪裏?(在iOS/OS X SDK中)__i386__和__x86_64__在哪裏定義?

我感興趣的原因是因爲我以前條件編譯爲iPhone模擬器如下:

#ifdef __i386__ 
    // Simulator-only code 
#endif 

而且只注意到我沒有用它更新爲新的64位iPhone模擬器也檢查__x86_64__,我也很好奇其他定義,因爲這似乎沒有官方的Apple文檔文件。

+0

如果你命令在Xcode中點擊它們,你應該看到它們的定義。你嘗試過嗎? (它可能是編譯器引入的一個定義) – borrrden

+2

作爲一個附註,爲什麼不直接使用'TARGET_IPHONE_SIMULATOR'定義?這就是它的原因。 – borrrden

+0

Command + click是我嘗試的第一件事 - >「找不到符號」。至於'TARGET_IPHONE_SIMULATOR',我正在用'#ifdef'嘗試它,它總是如此,因爲它總是被定義的(或者等於0或者1)。它現在只用'#if TARGET_IPHONE_SIMULATOR'工作。謝謝! – Rivera

回答

0

這些值在編譯時由CLANG定義,具體取決於您正在構建的目標,但是已由GNU C規範正式確定用於GCC。

+0

所以沒有「地方」去看他們(還有什麼被定義的)? – Rivera

+0

不,也不應該有。爲了給特定的體系結構輸出一個二進制文件,編譯器會給出它需要的參數,爲什麼它應該圍繞一個充滿條件的頭文件呢? – CodaFi

+0

對。我想我可以在「CompileC * .m normal i386」命令中「看」它們。 – Rivera