Program C++ saya perlu menggunakan perpustakaan C eksternal. Oleh karena itu, saya menggunakan
extern "C"
{
#include <library_header.h>
}
sintaks untuk setiap modul yang perlu saya gunakan.
Itu berfungsi dengan baik sampai sekarang. Sebuah modul menggunakan nama ini untuk beberapa variabel di salah satu file headernya. Perpustakaan C sendiri dapat dikompilasi dengan baik karena, dari apa yang saya tahu, ini tidak pernah menjadi kata kunci di C.
Namun meskipun saya menggunakan sintaks extern "C", saya mendapatkan kesalahan dari program C++ saat saya menyertakan file header tersebut.
Jika saya mengganti nama setiap ini di file header perpustakaan C dengan sesuatu seperti _ini, semuanya tampak berfungsi dengan baik.
Pertanyaannya adalah:
Bukankah sintaks extern "C" seharusnya cukup untuk kompatibilitas ke belakang, setidaknya pada tingkat sintaksis, untuk file header? Apakah ini masalah dengan kompiler?
extern "C"
hanyalah memberi tahu kompiler untuk tidak melakukan pengrusakan nama. - person Some programmer dude   schedule 03.09.2014extern "C"
mengatakan untuk menggunakan nama C mangling, yang biasanya berarti menambahkan garis bawah. - person Pete Becker   schedule 03.09.2014extern "C"
tidak secara ajaib mengalihkan bahasa saat ini ke C. Yang terpengaruh hanyalah spesifikasi tautan entitas eksternal. File header Anda masih dikompilasi sebagai kode C++ dan harus mematuhi semua aturan bahasa C++. - person AnT   schedule 03.09.2014