使用g++編譯包含C code的C++ program

使用g++來編譯C的程式時,因為C++ compiler實作polymorphism,是在assembly code部份將function name改掉,所以如果使用g++來編譯一般的C code,就會有undefined reference的問題,所以在這種情形下,我們要在有用到C code的部份加上以下敘述:

extern “C” {

  /* C code */

}

一般來說這樣就可以了,不過這個敘述是針對g++的compiler所設計的,為了避免在其他編譯器中產生問題,如:gcc。我們要加上一個preprocessing code。

#ifdef __cplusplus

extern “C” {

#endif

/* C code */

#ifdef __cplusplus

}

#endif

以上就可以解決編譯時期出現undefined reference的錯誤了。

發佈留言