GNU/Linux >> Belajar Linux >  >> Linux

Cara Memanggil Fungsi C di C++, Fungsi C++ di C (Campuran C dan C++)

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.


Linux
  1. Bagaimana cara membongkar, memodifikasi, dan kemudian memasang kembali executable Linux?

  2. Memanggil fungsi C dari kode C++

  3. Bagaimana menemukan penelepon dan penerima fungsi dalam kode C di vi/vim?

  1. Cara mendefinisikan dan menggunakan fungsi di Linux Shell Script

  2. Linux – Bagaimana Cara Memeriksa Distro Linux Apakah Aman Dan Tidak Memiliki Kode Berbahaya??

  3. CodeBlocks – IDE C, C++, dan Fortran Gratis &Lintas-Platform

  1. Cara Membuat dan Memanggil Fungsi di Bash

  2. Cara Mengkompilasi dan Menginstal Perangkat Lunak dari Kode Sumber di Linux

  3. Bagaimana cara menerapkan batas waktu dalam panggilan fungsi baca?