Erreur de syntaxe près du symbole inattendu « ( » ./test.c: l [Résolu]

Signaler
Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020
-
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
-
Bonjour à tous !
Voilà, je commence à apprendre le langage C, je code sous linux en utilisant la commande :
gcc (nom du fichier).c -Wall -o (nom du fichier)
puis:
./nom du fichier
Tout aller bien depuis 2 semaines, mais depuis hier impossible d'executer un programme. J'ai toujours la même erreur peu importe le code.
./test.c: ligne 2: erreur de syntaxe près du symbole inattendu « ( »
./test.c: ligne 2: `int main(void)'
J'ai essayé de donner le droits au fichier avec : chmod +x nom du fichier, rien n'y fait !
Le problème c'est que j'utilise souvent mon ordinateur pour la fac, je suis étudiant en informatique. J'ai besoin de pouvoir coder avec mon ordinateur.
Je vous remercie d'avance de l'aide que vous m'apporterai.

2 réponses

Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020
1
J'ai copié un code qui fonctionne, la compilation et l'execution se passe bien, le même code copié sur le bureau me donne dans la console ce message :
bash: ./exo7.c: Permission non accordée

Si j'utilise ensuite :
chmod +x nom du dossier j'obtiens le message:
./exo7.c: ligne 2: erreur de syntaxe près du symbole inattendu « ( »
./exo7.c: ligne 2: `int main (void)'

Donc c'est bien un problème de permissions ?
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
904
L'erreur est produite par bash, ton interpréteur de commande Linux, car tu essayes d'exécuter le code source (le fichier .c) et non pas le code objet produit en résultat de la compilation. Ci-dessus, tout d'abord, bash refuse d'exécuter le fichier .c, car il n'a pas d'attribut "x". Ensuite, lorsque tu tu lui affectes cet attribut, bash essaye d'exécuter le contenu du fichier texte au travers de bash, et, bien sûr, comme il ne s'agit pas d'un script bash, il te signale une erreur de syntaxe.

Si ta commande de compilation est :
gcc exo7.c -Wall -o exo7


cette commande produit un exécutable dénommé "exo7" à partir de "exo7.c"

Sous Linux, tu lances l'exécutable comme ceci :
./exo7
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
700
bonjour, tu as commencé à étudier récemment?
peux-tu partager ton code, et utiliser les balises? https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
700 >
Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020

qu'utilises-tu comme documentation du langage C?
je dois avouer que je suis perplexe en lisant la ligne 2 de ton code. qu'y fais-tu?
as-tu essayé un programme plus simple?
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
700 >
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

quand tu lis "erreur de syntaxe", que comprends-tu?
que signifie, pour toi, "syntaxe"?
qu'as-tu étudié pendant ta première année?
qu'est-ce qui te fait penser à un soucis de permission?
Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020
1 >
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

j'ai étudié python, html et css.
Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020
1 >
Messages postés
12594
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

Je ne vois pas comment le programme pourrait être plus simple que ça.
Mon professeur nous a dit de faire ça pour le moment, ça a toujours marché jusqu’à hier.
Je dis que c'est un problème de permission parce que tout les programmes que j'ai fais depuis 2 semaines se compiler et fonctionner.
J'en ai déduis que l'erreur ne venait pas du code mais d'autre chose. En fouillant un peu sur internet, certaines personne avait le même soucis, c'était par rapport à la compilation qui ne se faisait pas mais je ne vois pas ce qu'il faut faire.
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
904 >
Messages postés
151
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
20 septembre 2020

La ligne 2 de :

#include <stdio.h>
int main(void)
{

  return 0;
}  


est du C parfaitement valide.

Selon le standard du C, la fonction main peut s'écrire de l'une de ces façons :
int main(void);
int main(int argc, char* argv[]); 


La signature
int main(void)
devrait être utilisée si le programme n'a pas vocation à utiliser des paramètres passés en ligne de commande.