extern "C"
- 被 extern 限定的函數或變量是 extern 類型的
- 被
extern "C"
修飾的變量和函數是按照 C 語言方式編譯和鏈接的 extern "C"
的作用是讓 C++ 編譯器將extern "C"
聲明的代碼當作 C 語言代碼處理,可以避免 C++ 因符號修飾導致代碼不能和C語言庫中的符號進行鏈接的問題。
在項目代碼中看見這段代碼:
#ifndef __XXX_H__ #define __XXX_H__
#ifdef __cplusplus extern "C" { #endif
/*...*/
#ifdef __cplusplus }; #endif
=================================================================
#ifdef __cplusplus //c++編譯環境中才會定義__cplusplus (plus就是"+"的意思) extern "C" { //告訴編譯器下面的函數是c語言函數(因為c++和c語言對函數的編譯轉換不一樣,主要是c++中存在重載) #endif