Semplicemente usa le tue funzioni in C come se stessi programmando in C: includi il file header, e poi chiama la funzione. Ad es. in C++, questo programma si compilerà senza problemi:
#include <stdio.h> #include <stdlib.h> char buffer[1]; void foo (char *name) { FILE *f; if ((f = fopen (name, "r")) == NULL) return; fread (buffer, 1, 1, f); fclose (f); }
... #ifdef __cplusplus extern "C" { #endif /* definizioni C */ #ifdef __cplusplus } #endif ...Quella frase extern "C" per l'appunto dice al compilatore che le dichiarazioni seguenti sono di tipo C. Dopo aver indicato questo al compilatore, le definizioni C del modulo nei programmi in C++ saranno utilizzabili come se fossimo in C.
Ndt: mancare quelle direttive nel file header del C in gcc provocherà
errori di riferimenti indefiniti nella fase di link. È buona norma,
anche quando si scrivono librerie o programmi in C che si vuole possano essere
utilizzabili anche in C++ includere quelle linee, che non hanno effetto sui
programmi in C. Le #ifdef __cplusplus
servono per evitare errori
da parte dei compilatori che sono solo per il C e non conoscono la direttiva
extern "C"