2015-11-29 50 views
1

一個C++類我的印象是,它應該是可以混合C和C++代碼,但看起來像我錯了。使用C代碼

我有一堆現有的C代碼,並用C++編寫的一類,我想在現有的C代碼使用。

這可能嗎?

+2

訪問這些功能爲C++ –

+3

你必須寫在你的C++類的包裝,這將是從C這通常意味着訪問怎麼樣編譯一切創建一個具有指向類的C++實例的指針的包裝器'struct',以及每個使用這個包裝器的類成員函數的函數truct'並從C++代碼調用C++成員函數。 –

+0

請注意,儘管可以將它編譯爲C++,但混合使用C和C++很少會產生優質代碼。他們是不同的語言,應該這樣對待。 – szczurcio

回答

2

C++不是C的超集,因此不是所有的C代碼是有效的C++代碼。對於C編譯器中的C++代碼,情況更是如此。所有語言增加C++已無效C(類,泛型編程,名稱空間)。你可以做的是一個C++編譯器來編譯結果代碼和修復的情況下,這是有效期爲C編譯的代碼是不是一個C++編譯器。

+0

不,[C++不是C的超集](http://stackoverflow.com/a/31505447/417501)。它不甚密切。請停止告訴這個廢話。 – fuz

+0

@Fuzxxl在下載我之前,重新閱讀我說的話,我說C++不是C的超集。 –

+0

Huch?我一定誤解了你的評論。可惜的是,Stack Overflow不會讓我收回我的downvote,除非編輯了答案。我很抱歉我的錯誤。 – fuz

0

您可以混合使用這兩種然後編譯結果爲C++。

如果你想在C使用,那麼你可以刪除所有的成員函數和一個額外的參數是一個PTR的結構,然後改寫一個C++類。 更先進的C++功能也不會這麼容易C.

+0

您不能將C編譯爲C++。如果你這樣做,你從不寫C代碼,你寫了C++代碼。請不要混淆這兩種語言。 – fuz

2

不能使用從C代碼的類納入,因爲在C.不存在階級

但是,你可以定義一堆的全局函數訪問你的類,然後你就可以從C