2014-01-29 89 views
1

我想將Objective C代碼轉換爲普通的C語言。我可以通過手動方式輕鬆完成此操作。例如這個目標C代碼:可以鏗鏘聲或gcc將目標C代碼轉換爲純C嗎?

[object method]; 

可以轉換爲類似:

SEL method = sel_registerName("method"); 
objc_msgSend(object, method); 

然而,這是一種單調乏味的,特別是對於較大的文件。看來clang應該能夠很容易地生成這個C代碼。有沒有一種方法可以說服它這麼做?

+4

你需要這樣做的原因是什麼?有可能是另一種方式,不涉及通過C語言中間 – Avery3R

+0

@MMavipc如果還有另一種方式,那將是偉大的,但我懷疑是否有。我需要這個,因爲我想將一些可可的東西加入到Java中,並且C代碼幾乎與我想要的Java代碼相同。 – Hassan

+0

你需要真正的java源碼,還是java字節碼呢? – Avery3R

回答

3

簡短的回答:

較長的答案:鏗鏘支持-rewrite-objc,但你幾乎可以肯定不會喜歡的結果。

+0

你說得對,我不喜歡結果,但總比沒有好。謝謝。 – Hassan

+0

您是否知道是否有任何方法可以在沒有所有冗餘模型的情況下生成此代碼? – Hassan

+0

我對此表示懷疑。當輸出被饋送到C++編譯器時,IIRC轉換不是多餘的。 –