2014-08-30 55 views
1

我想包括C代碼,「config.h中」,在C++代碼中使用:錯誤,當我包括C在C++

extern "C" 
{ 
#include "config.h" 
} 

如果我編譯「config.h中的」單獨用gcc我沒有錯誤,但是當我連克編譯C++代碼+我得到以下錯誤:

無效的轉換,從「無效」到「字符*」 *

錯誤指向從 「config.h中」 下面的行:

newsect->name = malloc(strlen(config)); 

其中配置是類型char *的。

任何人都可以請告訴我如何使這項工作?先謝謝你!

+2

該行在C中有效,因爲'void *'(由'malloc'返回)可以隱式轉換爲另一種類型。 C++沒有相同的行爲。你必須添加一個類似'(char *)'的強制類型來使它成爲合法的C++。 – birryree 2014-08-30 22:19:51

+1

(char *)malloc(...); – 2014-08-30 22:20:33

+1

爲什麼你的頭文件中有代碼? – sp2danny 2014-08-30 22:23:45

回答

0

name可能是一個char *,所以只需使用:

newsect->name = (char *)malloc(strlen(config)); 

希望這有助於!