2017-06-15 59 views
0

最近,我有一個問題。 clang可以將Objective-C轉換爲C++ use -rewrite-objc。 所以我認爲,第一步。鏗鏘將Objective-C編譯爲C++。然後編譯纔可以使用C++編譯器。它是這樣嗎? clang首先用runTime將Objective-C轉換爲C++,然後編譯爲機器代碼?-rewrite-objc和叮噹中的Objective-C

回答

3

-rewrite-objc存在將ObjC轉換爲C++,因此它可以在Visual Studio中編譯。它仍然是Objective-C語義,您仍然需要objective-c運行時。這不是神奇地將Objective-C轉換爲C++ OO架構。

這更像是當Objective-C作爲預編譯器擴展實現時。

這一切都依賴於這樣一個事實,即Objective-C類只是具有花哨行爲的C結構,而Objective-C方法調用全部可以轉換爲調用objc_msgSend()

+0

謝謝。但是我也知道,在編譯時,Clang會直接將OC轉換爲機器代碼,而不是直接轉換爲C++? – merito

+0

它在編譯之前將其轉換爲C++代碼(主要是C,真的)特別是在Visual Studio編譯器接管之前。 – bbum

+0

對不起,打擾你了。在這[問題](https://stackoverflow.com/questions/22234485/how-does-objective-c-compile),最高的答案混淆了我。因此,在編寫OC時應該使用任何C/C++ IR生活? – merito