Forcer gcc pour compiler .rpc fichier en tant que C
J'ai un externe fourni .fichier cpp. C'est un mélange de C du code compatible et un peu de C++. Le code C++ est juste un wrapper autour de la C pour tirer parti des fonctionnalités C++.
Il utilise #ifdef __cplusplus
macros pour protéger le code C++, ce qui est excellent. Malheureusement, si j'essaie de le compiler avec gcc, il le traite comme C++ car le fichier qui se termine. Je suis conscient des différences entre la gcc et g++ - je ne veux pas compiler du C++.
Est-il possible que je peux forcer gcc pour traiter ce fichier comme un fichier C? J'ai essayé en utilisant par exemple --std=c99
, mais ce produit correctement l'erreur que C99 n'est pas valide pour C++.
De renommer le fichier .c fonctionne, mais j'aimerais éviter cette situation, si possible, car il est fournis par l'extérieur et il serait bien pour qu'il reste comme une copie primitive.
Merci!
- Parfois, quand je vois tant de questions. J'ai juste envie de crier un grand RTFM!!
man gcc
. Pour ce roi de la question, il prend moins de temps que d'écrire la question. - J'ai eu le même problème parce que je voulais compiler pur C du code dans un .fichier cpp...évidemment, je suis tout à fait un débutant concernant C. RTFM! n'est pas un bon conseil alors. gcc pages de man sont 11.000 lignes et il est assez difficile de trouver une solution là-bas, si vous ne savez pas quoi chercher.
Vous devez vous connecter pour publier un commentaire.
La
-x
option de gcc permet de spécifier la langue de tous les fichiers d'entrée suivant: laSi vous voulez seulement les cas qu'un seul fichier, vous pouvez utiliser
-x none
à arrêter le traitement spécial:(
your-filename.cpp
seront compilés comme le C, tandis queother-file-name.cpp
va utiliser l'extension et de compiler en C++)Pour compiler foo.cpp comme un fichier C, vous pouvez créer un nouveau fichier nommé foo.c et placer celui-ci comme l'ensemble de son contenu:
Maintenant compiler foo.c au lieu de foo.cpp.
Nous en avons profité pour aller dans l'autre sens (de la compilation d'un .c fichier C++) pour commencer à utiliser des fonctionnalités C++ dans certains fichiers tout en préservant leurs dix années d'historique CVS. Aussi, nous construisons à l'aide de chaque plate-forme du compilateur natif, pas seulement de la GCC, donc nous n'avons pas trouver le
-x
commande équivalente pour une demi-douzaine de compilateurs, et puis faire de notre système de construction d'appliquer cette commande uniquement pour certains fichiers.