C C++ コードが混在しています。すべて g++ でコンパイルされています。Cヘッダーがあるところはどこでも、ヘッダーファイルの内容が内部に含まれています
#if defined(__cplusplus)
extern "C" {
#endif
と
#if defined(__cplusplus)
extern "C" {
#endif
しかし、ある C ヘッダー ファイルで、パラメーター名を template として誤って使用した g++ コンパイル エラーが発生しました。これは明らかに正しくなく、c++ キーワードtemplateと競合しています。
このパラメーター名を変更できることはわかっていますが、このextern "C"
宣言が機能しない理由と、ヘッダー ファイルが意図した C ではなく C++ コードと見なされる理由を考えています。
g++ バージョン 4.1.1 Linux Red Hat Enterprise。