Local function definitions are illegal
Résolu/Fermé
BV91
Messages postés
15
Date d'inscription
vendredi 12 avril 2013
Statut
Membre
Dernière intervention
21 mai 2013
-
15 avril 2013 à 16:04
BV91 Messages postés 15 Date d'inscription vendredi 12 avril 2013 Statut Membre Dernière intervention 21 mai 2013 - 20 avril 2013 à 18:34
BV91 Messages postés 15 Date d'inscription vendredi 12 avril 2013 Statut Membre Dernière intervention 21 mai 2013 - 20 avril 2013 à 18:34
A voir également:
- Local function definitions are illegal
- Appdata local - Guide
- Illégal - Guide
- Site de streaming illégal - Accueil - Services en ligne
- Site de telechargement illegal - Accueil - Outils
- Ip local - Guide
1 réponse
Utilisateur anonyme
15 avril 2013 à 16:12
15 avril 2013 à 16:12
Bonjour
Comme l'indique le message, tu essayes de déclarer une fonction (ShowReg) à l'intérieur d'une autre (main).
C'est interdit en C.
Il suffit de la déclarer à l'extérieur de main, c'est aussi simple que ça.
Comme l'indique le message, tu essayes de déclarer une fonction (ShowReg) à l'intérieur d'une autre (main).
C'est interdit en C.
Il suffit de la déclarer à l'extérieur de main, c'est aussi simple que ça.
15 avril 2013 à 16:15
J'ai déclaré la fonction à l'extérieur comme indiqué.
15 avril 2013 à 16:24
Outre l'excellent réponse de le père, voilà d'autre commentaires utiles :
- main devrait être déclarée "int main()" et retourner 0 en fin d'exécution avec un "return 0;" avant ta dernière accolade, indiquant à l'environnement que ton programme s'est terminé sans erreurs
- ton erreur indique que ton fichier s'appelle "Exercice1.cpp" - si tu codes en C, il faut que ton projet soit compilé par un compilateur C, et non un compilateur C++
- tu ne fais pas de contrôle d'erreur sur le résultat de scanf, mais je suppose que tu sais cela
Dal
Modifié par BV91 le 15/04/2013 à 16:32
Pour la compilation, j'ai remplacé le nom du projet "Exercice.cpp" par "Exercice.c". Est-ce suffisant ?
Quant à scanf, j'ai écrit une autre fonction qui contrôle la saisie de l'utilisateur et vérifie que les valeurs entrées sont bien des chiffres (en utilisant "isdigit").
P.S. J'utilise Visual C++ 6.0 comme IDE.
15 avril 2013 à 17:03
https://stackoverflow.com/questions/3327199/how-can-i-use-visual-studio-2010-for-c-development
Pour scanf, ma compréhension est que tu simules l'obtention d'un chiffre provenant d'un registre (cf. ta question précédente) dont tu connaitras a priori la taille dans l'implémentation réelle. Donc en sécuriser l'usage a un intérêt limité pour obtenir des chiffres, mais vois quand même https://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1043372399&id=1043284385 si tu veux comprendre pourquoi il est préférable de faire autrement si c'était une véritable saisie que tu attendais dans ton application.
Dal
15 avril 2013 à 17:12
Je vois sur un autre topic que ce code est destiné à tourner sur un microcontrôleur.
Si c'est bien le cas, alors void main (void) sera certainement la bonne déclaration dans la version finale, et il ne devra pas y avoir de return dans le main car il n'y aura pas d'OS à qui rendre la main en fin d'exécution.