Compilateur erreur... Sur un commentaire
Résolu
Utilisateur anonyme
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir.
Voila, cela fait pas mal de temps que je programme en C mais je n'ai jamais vu une telle chose : le compilateur me renvoie une erreur sur un commentaire de type :
Alors qu'il n'est même pas censé le lire.
Voici l'erreur :
Cela arrive lorsque j'ajoute simplement un commentaire à mon programme, et ce sur n'importe quel programme.
Sachez que je peux sans problème utiliser les commentaires de type :
Mais c'est moins pratique.
Pouvez-vous m'aider ?
Merci.
EchoIsON.
Voila, cela fait pas mal de temps que je programme en C mais je n'ai jamais vu une telle chose : le compilateur me renvoie une erreur sur un commentaire de type :
// commentaire
Alors qu'il n'est même pas censé le lire.
Voici l'erreur :
error: expected expression before '/' token|
error: stray '\351' in program|
Cela arrive lorsque j'ajoute simplement un commentaire à mon programme, et ce sur n'importe quel programme.
Sachez que je peux sans problème utiliser les commentaires de type :
/* Commentaire */
Mais c'est moins pratique.
Pouvez-vous m'aider ?
Merci.
EchoIsON.
A voir également:
- Stray ' 240' in program
- Commentaire word - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
5 réponses
Salut,
Vérifie qu'il ne manque pas les ";", "{ }", "( )" et ce genre de chose. Sinon colle un code typique entre les balises C dans l'éditeur de message.
Vérifie qu'il ne manque pas les ";", "{ }", "( )" et ce genre de chose. Sinon colle un code typique entre les balises C dans l'éditeur de message.
D'expérience, certains compilateurs C n'acceptent pas le // mais uniquement le /* */
Tu es peut être dans ce cas.
Tu es peut être dans ce cas.
Salut EchoIsON,
S'agissant de l'erreur
Selon la signature de ton message d'origine, ta configuration est :
Configuration: Windows 7, Code::Blocks 16.01 compilateur GNU GCC, langage C
Si oui, tu as peut être altéré la configuration par défaut des options de compilation de gcc, par exemple en lui passant l'option "-ansi", ce qui se fait par Codeblocks :
- au niveau global dans Settings - Compiler and debugger ... - Bouton Global compiler settings - pour GCC - onglet Compiler flags - option "In C mode, support all ISO C90 programs (...) [-ansi]
- au niveau du projet dans Project - Build options - racine du projet - pour GCC - onglet Compiler settings - onglet Compiler flags - option "In C mode, support all ISO C90 programs (...) [-ansi]
Avec GCC cette option est l'une des options utilisable pour modifier le comportement du compilateur en lui demandant de vérifier le respect de la norme C89/90. Les
Compiles le code :
et observe le contenu de la fenêtre "Build log", qui va contenir la ligne de commande exacte lancée avec gcc avec les options gcc.
Vois la documentation de gcc pour avoir plus d'informations sur ce que font exactement les options choisies : https://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index
Poste éventuellement le contenu de "Build log" et le contenu de "Build messages" si tu es perdu et que tu ne vois pas quelles options tu dois rectifier.
Dal
S'agissant de l'erreur
error: expected expression before '/' token, comme le dit NHenry, certains compilateurs C n'acceptent pas le
//mais uniquement le
/* */.
Selon la signature de ton message d'origine, ta configuration est :
Configuration: Windows 7, Code::Blocks 16.01 compilateur GNU GCC, langage C
Si oui, tu as peut être altéré la configuration par défaut des options de compilation de gcc, par exemple en lui passant l'option "-ansi", ce qui se fait par Codeblocks :
- au niveau global dans Settings - Compiler and debugger ... - Bouton Global compiler settings - pour GCC - onglet Compiler flags - option "In C mode, support all ISO C90 programs (...) [-ansi]
- au niveau du projet dans Project - Build options - racine du projet - pour GCC - onglet Compiler settings - onglet Compiler flags - option "In C mode, support all ISO C90 programs (...) [-ansi]
Avec GCC cette option est l'une des options utilisable pour modifier le comportement du compilateur en lui demandant de vérifier le respect de la norme C89/90. Les
//n'ont été admis par le standard C comme commentaires qu'à partir du standard C99.
Compiles le code :
int main(int argc, char *argv[]) { //Test return 0; }
et observe le contenu de la fenêtre "Build log", qui va contenir la ligne de commande exacte lancée avec gcc avec les options gcc.
Vois la documentation de gcc pour avoir plus d'informations sur ce que font exactement les options choisies : https://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index
Poste éventuellement le contenu de "Build log" et le contenu de "Build messages" si tu es perdu et que tu ne vois pas quelles options tu dois rectifier.
Dal
Bonsoir.
Merci pour toutes ces informations.
En effet, le problème est réglé, dés que j'ai décoché "In C mode, support all ISO C90 programs. In C++ mode, remove GNU extensions that conflict with ISO C++" dans les options.
En fin de compte, je ne sais pas si cette option était réellement utile. Si elle l'est, utiliser /* */ ne me dérange pas tellement.
Merci à tous.
Merci pour toutes ces informations.
En effet, le problème est réglé, dés que j'ai décoché "In C mode, support all ISO C90 programs. In C++ mode, remove GNU extensions that conflict with ISO C++" dans les options.
En fin de compte, je ne sais pas si cette option était réellement utile. Si elle l'est, utiliser /* */ ne me dérange pas tellement.
Merci à tous.
Elle est utile si tu veux t'assurer d'écrire du code C compatible avec tous les compilateurs respectant le standard C89/90 (le premier standard du C datant de 1989) et maximiser ainsi la portabilité de ton programme.
Si tel est ton objectif, tu devrais dans ce cas aussi cumuler l'option -ansi avec -pedantic ou -pedantic-errors pour d'avantages de contrôles.
https://gcc.gnu.org/onlinedocs/gcc/Warnings-and-Errors.html#index-pedantic-4474
Tu trouves d'avantages d'informations sur gcc et le statut de l'implémentation des différentes versions du standard du C sur ce compilateur là :
https://gcc.gnu.org/onlinedocs/gcc/Standards.html
Dal
Si tel est ton objectif, tu devrais dans ce cas aussi cumuler l'option -ansi avec -pedantic ou -pedantic-errors pour d'avantages de contrôles.
https://gcc.gnu.org/onlinedocs/gcc/Warnings-and-Errors.html#index-pedantic-4474
Tu trouves d'avantages d'informations sur gcc et le statut de l'implémentation des différentes versions du standard du C sur ce compilateur là :
https://gcc.gnu.org/onlinedocs/gcc/Standards.html
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Probablement que tu as utilisé un caractère interdit (par exemple une espace insécable, etc.). Retape la ligne entièrement pour être sûr qu'elle soit propre (et non copier coller).
Pour le reste, effectivement, // a été introduit dans la norme C99. Initialement, le C k&r puis ISO C89/90 ne reconnaît que le /**/. Mais t'aurais eu un message d'erreur explicite.
Probablement que tu as utilisé un caractère interdit (par exemple une espace insécable, etc.). Retape la ligne entièrement pour être sûr qu'elle soit propre (et non copier coller).
Pour le reste, effectivement, // a été introduit dans la norme C99. Initialement, le C k&r puis ISO C89/90 ne reconnaît que le /**/. Mais t'aurais eu un message d'erreur explicite.
Non il ne manque rien.
Voici un code par exemple :
De toute manière peu importe, j'ai la même erreur ici :