-1
votes

Que sont les drapeaux de compilateur? Pourquoi mon code ne compilera-t-il pas?

J'ai écrit un code en C à Ubuntu qui vérifie les supports équilibrés dans l'entrée donnée.Je compilé à l'aide de GCC Compiler et je reçois la sortie correcte. C'est en fait une partie d'un cours en ligne et ils me demandent de Utilisez le drapeau du compilateur

cc1plus: warning: command line option ‘-std=c11’ is valid for C/ObjC but not for C++


19 commentaires

Écrivez-vous drapeau devant gcc ? Retirez-le. C'est tout simplement faux.


Je l'ai fait par erreur.


Eh bien, il est impossible de dire pourquoi votre code ne compile pas sans code de code et d'erreur.


La raison a probablement quelque chose à voir avec C11 mais si vous ne fournissez pas plus d'informations, il est impossible de dire.


-Pipe évite simplement l'utilisation de fichiers pour un stockage temporaire - est-ce requis pour une utilisation locale ou pour la compilation par certains outils en ligne? Cela pourrait avoir du sens s'ils ne veulent pas leur serveur encombré de fichiers temporaires. Toutes ces options sont documenté


Commencez à prendre les drapeaux un par un. Lorsque vous trouvez le drapeau incriminé, lisez la documentation et déterminez ce que cela échoue. En outre, vous nommez votre fichier FileName.c , n'oubliez pas que UNIX (Ubuntu) est sensible à la casse et balk si vous utilisez FileName.c .


Essayez de supprimer le <> . Je suppose que cela ne signifie que signifie "insérer ton propre nom de fichier ici". C'est à dire. Remplacez avec FileName.c .


Si le fichier est FileName.c , il est possible que le fichier contienne du code C ++ plutôt que C + code - ou que GCC suppose qu'il contient du code C ++ lorsqu'il est en réalité C code - et qu'il ne Comme ce qu'il voit parce que c'est l'autre langue. Les noms de fichier sur Ubuntu sont sensibles à la casse: FileName.c et FileName.ca.C sont des fichiers différents et représentent normalement le code dans différentes langues (minuscule c < / code> pour le code C; majuscule C pour le code C ++). (Voir la documentation GCC pour Options globales .


Votre question doit inclure le texte exact du message d'erreur que vous obtenez lorsque vous essayez de compiler avec gcc -pipe -o2 -std = c11 -LM ou autre explication de ce que vous entendez par "My le code n'est pas compilé ".


Comme j'ai dit. Incluez le message d'erreur et arrêtez de forcer les gens à deviner ce qui ne va pas.


Je reçois un avertissement qui dit -std = C11 valable pour c / obj c mais pas pour C ++


Tapez la commande que GCC et post la sortie


Aussi, modifiez la question et ajoutez le message d'erreur complet et exact


Sortie: / usr / bin / gcc


oui s'il vous plaît attendez


Ce n'est pas le message d'erreur que vous avez mentionné précédemment?


LRWXRWXRWX 1 racine racine 5 mai 20 21:38 / USR / BIN / GCC -> GCC-7


Il a changé après avoir changé le nom de fichier de c à c parce que quelqu'un a déclaré que c est pour C ++


S'il vous plaît ne modifiez pas votre question après avoir obtenu des réponses. Cela invalide les anciennes réponses. Si vous avez un nouveau problème, postez une nouvelle question, mais non de modifier votre question itérativement jusqu'à ce que votre code ne fonctionne.


3 Réponses :


-1
votes

par "", ils signifient de substituer au nom du fichier que vous souhaitez compiler. Y compris la chaîne littérale "" ne fonctionnera pas.


0 commentaires

1
votes

La raison est la fin du fichier. Un capital C est interprété comme un fichier C ++. La solution consiste à renommer le fichier comme celui-ci: xxx

Ma question est si mon code compile lorsque je fais GCC FileName.c Pourquoi ne compilait pas quand je fais GCC -PIPE -O2 -STD = C11 -LM

Voir ci-dessus. Mais il y a des situations où cela ne résoudrait pas tout. Bien que C11 donne des extensions aux versions précédentes, ce n'est pas 100% compatible à l'envers.


2 commentaires

Oui je l'ai changé.


Je l'ai corrigé. Merci.



0
votes

-std = c11 est une option correcte Cependant, vous avez besoin d'au moins GCC 4.7 ou plus pour avoir cette option


0 commentaires