Local function definitions are illegal
Résolu
BV91
Messages postés
16
Statut
Membre
-
BV91 Messages postés 16 Statut Membre -
BV91 Messages postés 16 Statut Membre -
Bonjour,
J'essaie d'écrire une petite fonction pour afficher le contenu d'un registre et pour cela j'ai écrit ce code :
Au moment de la compilation, j'ai eu cette erreur :
Exercice1.cpp(7) : error C2601: 'ShowReg' : local function definitions are illegal
Quelqu'un pourrait m'expliquer comment la corriger ?
Merci d'avance !
J'essaie d'écrire une petite fonction pour afficher le contenu d'un registre et pour cela j'ai écrit ce code :
#include <stdio.h>
#include <stdlib.h>
void main()
{
int ShowReg() // Déclarer la fonction ShowReg
{
int registre = 0;
scanf("%d", ®istre);
printf("Contenu du registre %d", registre);
return registre;
}
}
Au moment de la compilation, j'ai eu cette erreur :
Exercice1.cpp(7) : error C2601: 'ShowReg' : local function definitions are illegal
Quelqu'un pourrait m'expliquer comment la corriger ?
Merci d'avance !
A voir également:
- Local function definitions are illegal
- Illégal - Guide
- Appdata local - Guide
- Site de telechargement illegal - Accueil - Outils
- Iptv illégal - Accueil - Streaming
- IPTV illégal : après les pirates, la justice condamne maintenant les clients… jusqu'à la prison ! - Guide
J'ai déclaré la fonction à l'extérieur comme indiqué.
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
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.
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
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.