Bahasa C ++ memungkinkan pencampuran kedua C ++ dan C dalam satu file sumber. Sebagai contoh,
extern "C" {
struct bar { /* ... */ }
}
Apakah C ++ atau pernahkah ia mendukung "bahasa tautan" lainnya selain C? misalnya extern "Pascal"
atauextern "Haskell"
programming-languages
c++
c
dkaranovich
sumber
sumber
extern "C"
setara untuk berinteraksi satu sama lainextern "C"
hanya memengaruhi pertautan, bukan sintaks dan semantik teks di dalam blok. Dengan kata lain, itu masih C ++ di dalamextern "C"
blok itu; nama simbol tidak hancur. Lihat stackoverflow.com/q/1041866/712605Jawaban:
extern "C"
mungkin satu-satunya yang diperlukan:Namun orang lain dapat ada sesuai kutipan ini:
sumber
Dalam banyak (sebagian besar) lingkungan "extern" C "adalah konvensi penautan default untuk semua bahasa pada sistem.
Jadi tergantung pada sistem operasi dan implementasi bahasa "asing" "extern C" adalah semua yang Anda butuhkan untuk memanggil program dalam bahasa kompilasi lain.
sumber
extern "Language"
" sintaks, mereka melakukannya melalui ekstensi C platform-spesifik, jadi untuk C ++ itu masih hanyaextern "C"
dan khusus kata kunci menentukan konvensi panggilan yang berbeda.G ++ di beberapa titik didukung
extern "Java"
untuk berinteraksi dengan kode Java yang dikompilasi dengan GCJ./programming/15167867/extern-java-block-in-gcc
sumber
Tidak! C ++ hanya mendukung C sebagai "bahasa tautan".
extern "C" {struct bar {/ * ... * /}}
Sintaks seperti di atas berarti bahwa tidak mengubah nama variabel, struct atau fungsi. Karena C ++ mungkin mengubah nama variabel, struct atau fungsi untuk mengimplementasikan Class, Namespace dan fungsi overloading.
Jika Anda tidak melakukan ini, penghubung mungkin tidak dapat menemukan objek variabel, struct fungsi.
C ++ dirancang agar kompatibel dengan C. Eksternal "C" adalah cara untuk mengimplementasikan yang kompatibel dengan C.
sumber
extern "C"
danextern "C++"
satu-satunya yang wajib, tetapi implementasi diizinkan untuk menyediakan yang lain.