使用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的錯誤了。
發佈留言
很抱歉,必須登入網站才能發佈留言。