[C++] A quoi ca sert la directive extern "C"

A quoi ca sert la directive extern "C" [C++] - Programmation

Marsh Posté le 13-12-2001 à 22:44:38    

Je me doute que ca doit pas etre bien important mais j'aimerais bien comprendre!

Reply

Marsh Posté le 13-12-2001 à 22:44:38   

Reply

Marsh Posté le 13-12-2001 à 22:56:39    

C'est pour que tes fonctions puissent etre appelees d'un autre programme C/C++.
 

Citation :

Rather than rewrite your Fortran or assembly language code, you should call your existing code from within Visual C++. Your functions and subroutines can reside in a separate module and be compiled on your native compiler. You can call into other-language modules from your C/C++ programs if you take into account differences in calling conventions and naming conventions among different languages. Often, these differences can be resolved by declaring other-language functions in C/C++ with keywords, such as _stdcall and extern "C".

Reply

Marsh Posté le 14-12-2001 à 00:38:44    

ça indique au compilateur que le language dans lequel va être codé le bloc qui suit la directive sera en C

Reply

Marsh Posté le 14-12-2001 à 01:37:17    

pas forcement ..  
 
le mot cle extern indique au compilo de ne pas allouer de la memoire pour la variable ou fonction qui suit.
 
imaginons que tu ecrives un bout de programme en assembleur et le reste en c. Et que tu as une fonction du programme assembleur qui est appelé dans le prog en c.. et bien il va bien falloir definir son prototype mais de facon 'externe' pour qu'il n'y ait pas d'allocation memoire au niveau de la compilation de ton programme C .. sinon y'aurait de zone memoire pour la meme fonction/variable -> erreur de link.

Reply

Marsh Posté le 14-12-2001 à 09:10:56    

J'aurais pensé que ca servait au compilo afin de generer un code correct quand aux  
-generations de symboles, afin que le linker y retrouve ses petits
- generation du prologue et de l'epilogue corrects pour une fonction afin que le passage des parametres a l'appel, et le recuperation de la valeur de la fonction ainsi que le depilage et clean-up des parametres par l'appelante, s'il y a lieu, au retour, soit coherent.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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