Ada kalanya diperlukan untuk mencampur kode C dan C++ bersama-sama. Misalnya, saat menggunakan kode C lama atau saat menggunakan pustaka C tertentu, kode C++ Anda dilengkapi dengan beberapa fungsi tertentu. Jadi, ada beberapa langkah khusus yang harus diperhatikan saat menggunakan kode C di file C++ atau sebaliknya.
Artikel ini, melalui beberapa contoh membahas langkah-langkah yang diperlukan untuk mencampur kode C/C++.
1. Panggil fungsi C dari C++
Pada bagian ini kita akan membahas tentang cara memanggil fungsi C dari kode C++.
Berikut adalah kode C (Cfile.c):
#include <stdio.h> void f(void) { printf("\n This is a C code\n"); }
Langkah pertama adalah membuat library dari kode C ini. Langkah-langkah berikut membuat shared library :
$ gcc -c -Wall -Werror -fPIC Cfile.c $ gcc -shared -o libCfile.so Cfile.o
Pustaka bersama libCfile.so dihasilkan sebagai hasil dari dua perintah di atas.
Berikut adalah kode C++ utama (main.cpp):
#include <iostream> extern "C" { void f(); } void func(void) { std::cout<<"\n being used within C++ code\n"; } int main(void) { f(); func(); return 0; }
Fungsi C f() dideklarasikan dalam notasi extern “C” untuk memberi tahu kompiler cpp bahwa ia memiliki hubungan tipe C.
Sekarang, kompilasi kodenya (pastikan pustaka bersama libCfile.so ditautkan ke kode):
$ g++ -L/home/himanshu/practice/ -Wall main.cpp -o main -lCfile
Sebelum menjalankan file yang dapat dieksekusi, pastikan bahwa jalur pustaka bersama berisi variabel lingkungan LD_LIBRARY_PATH.
$ export LD_LIBRARY_PATH=/home/himanshu/practice:$LD_LIBRARY_PATH
Sekarang jalankan 'main' yang dapat dieksekusi :
$ ./main This is a C code being used within C++ code
Jadi kita melihat bahwa fungsi C berhasil dipanggil dari kode C++.
Baca juga ini untuk informasi mendetail tentang cara membuat pustaka bersama di Linux.
2. Panggil fungsi C++ dari C
Pada bagian ini kita akan membahas tentang cara memanggil fungsi C++ dari kode C.
Berikut adalah kode C++ (CPPfile.cpp):
#include <iostream> void func(void) { std::cout<<"\n This is a C++ code\n"; }
Kita akan melihat bagaimana fungsi func() dapat dipanggil dari kode C.
Langkah pertama adalah mengubah deklarasi/definisi fungsi ini dengan memasukkan notasi extern “C”.
#include <iostream> extern "C" void func(void) { std::cout<<"\n This is a C++ code\n"; }
Langkah selanjutnya adalah membuat library dari kode di atas. Langkah-langkah berikut membuat perpustakaan bersama:
g++ -c -Wall -Werror -fPIC CPPfile.cpp $ g++ -shared -o libCPPfile.so CPPfile.o
Perintah di atas akan menghasilkan libCPPfile.so shared library.
Berikut adalah kode utama dalam bahasa C (main.c) :
#include <stdio.h> extern void func(void); void f(void) { printf("\n being used within C code\n"); } int main(void) { func(); f(); return 0; }
Harap dicatat bahwa fungsi C++ dideklarasikan sebagai extern di sini.
Kompilasi kode C (main.c) seperti ini:
gcc -L/home/himanshu/practice/ -Wall main.c -o main -lCPPfile
dan tambahkan jalur direktori saat ini ke variabel lingkungan LD_LIBRARY _PATH
export LD_LIBRARY_PATH=/home/himanshu/practice:$LD_LIBRARY_PATH
Sekarang jalankan 'main' yang dapat dieksekusi :
$ ./main This is a C++ code being used within C code
Output di atas menunjukkan bahwa fungsi C++ berhasil dipanggil dari kode C.