inclure fonction C dans du C++

inclure fonction C dans du C++ - C++ - Programmation

Marsh Posté le 08-05-2008 à 10:57:22    

Bonjour,
 
Je suis actuellement en stage en entreprise et je dois repasser une application DOS en application fenêtre C++ avec Borland.
 
Je coince sur comment récupérer des fonctions écrites en C et les incorporer au code C++ de telle manière à ne pas tout ré-écrire car mon stage est court... J'ai bien essayé d'inclure une fonction dans un #ifdef cpluplus dans le code d'un bouton à cliquer et d'ajouter en include le fichier en .c tout en n'oubliant pas de l'ajouter au projet, mais rien ne se passe.
 
Quelqu'un aurait-il la gentillesse de m'aider? Je suppose que ce problème doit être assez récurrent, j'ai essayé de rechercher sur le forum, mais je n'ai pas du taper ce qu'il fallait.
 
Amicalement,
 

Reply

Marsh Posté le 08-05-2008 à 10:57:22   

Reply

Marsh Posté le 08-05-2008 à 11:19:48    

les strucutes C et C++ sont identiques.
Les fonctions ont une signature différente. En C, si le fichier est compilé en tant que fichier C, il n'y a rien à faire. Par contre dans l'en-tête, il faut déclarer les fonctions comme externe "C" quand il est inclus comme du C++.
 

Code :
  1. /* fichier toto.c */
  2. int afficher( const char* text )
  3. {
  4.     return puts( text );
  5. }


 

Code :
  1. /* fichier toto.h */
  2. #ifdef __cplusplus
  3. extern "C" {
  4. #endif
  5. int afficher( const char* text );
  6. #ifdef __cplusplus
  7. }
  8. #endif


 
 

Code :
  1. /* fichier papa.cpp */
  2. #include "toto.h"
  3. int main()
  4. {
  5.    afficher( "hello" );
  6.    return 0;
  7. }


Reply

Marsh Posté le 08-05-2008 à 11:59:39    

Merci oh jesus, de ta réponse rapide, j'ai peut être pas tout fait dans l'ordre, je m'en vais essayer de suite à nouveau avec ton exemple.
 
avec ta claire explication, si cela ne fonctionne pas, je mange mon clavier, euh ma souris...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed