Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
Version imprimable
Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
en l'appelant avec gcc plut�t que g++ ?
ouai gcc, mais si tu compiles du C++ �a va faire vilain :').
Salut,
En fait, gcc lui-m�me n'est qu'un outil qui permet de distribuer la tache aux diff�rents compilateur:
Normalement, il est capable de d�terminer quel compilateur il faudra r�ellement appeler, mais tu peux lui indiquer explicitement le langage utilis� avec l'option -x (tu peux faire un tour sur http://gcc.gnu.org/onlinedocs/gcc/Ov...verall-Options pour en savoir plus ;))
- cc1 pour C
- g++ pour C++
- gnat(quelque chose) pour ada
- gfortran pour ... fortran (qui l'eu cru :P)
- ...
Il y a cependant une restriction � la compilation de C++ en invoquant gcc au lieu de c++:
La biblioth�que libstdc++.a n'est pas automatiquement utilis�e lors de l'�dition de liens, et le chemin vers les en-t�tes C++ n'est parfois pas d�fini.
Tu devra donc invoquer gcc en indiquant (certainement) qu'il faut ex�ctuer l'�dition de lien avec stdc++ et (d�pendant de l'endroit o� se trouvent les en-t�te C++) �ventuellement le chemin d'acc�s vers les en-t�te C++, voire, le chemin d'acc�s � libstdc++.a sous la forme de
G++, de son cot�, ajoute automatiquement libstdc++ � l'�dition de liens et devrait normalement connaitre le chemin vers les en-t�tes ;)Code:
1
2
3gcc monfichier.cpp -IcheminVersEnTeteC++ -lstdc++ -LcheminVersLibStdC++ /* ou (si l'extension du fichier n'est pas reconnue comme extension C++) */ gcc -x c++ monfichierSansExtension -IcheminVersEnTeteC++ -lstdc++
Il faut enfin noter que, si g++ rencontre un fichier C, il pourra le compiler (apr�s tout: il y a un sous ensemble commun), mais il le fera en... C++.
Ainsi un simple int *ptr=malloc(sizeof(int)* 15); sera accept� par gcc (edit: en fait, par CC1) et refus� par g++
Si donc tu as des des fichiers C � compiler ... en C et des fichiers C++ � compiler en C++, l'id�al est de travailler avec gcc et non g++, et de rajouter le flag -l (et �ventuellement le flag -I) � ta r�gle de compilation des fichiers C++