error C2143: erreur de syntaxe : manquant ';' avant 'type'

Je suis nouveau en programmation C.. s'il vous plaît dites-moi quel est le problème avec ce programme, et pourquoi j'obtiens cette erreur: error C2143: erreur de syntaxe : manquant ';' avant 'type'....

extern void func();

int main(int argc, char ** argv){
    func();
    int i=1;
    for(;i<=5; i++) {
        register int number = 7;
        printf("number is %d\n", number++);
    }
    getch();
}
  • Je n'ai pas utilisé visual dans au moins 8 ans, mais n'Visuelle limitée du compilateur C de soutien de permettre le mélange de code et les variables? Est la ligne de l'erreur sur la déclaration int i=1; ?? Essayez de le déplacer au-dessus de l'appel à la touche func(); Aussi, je voudrais utiliser extern void func(void);
  • Vous n'êtes pas montrer le code complet. L'aide de l'extrait en question est fine et ne devrait pas avoir des erreurs de syntaxe.
  • Je crois que c'est le problème: Visual C ne permet pas de mélange des déclarations et, d'une fonctionnalité ajoutée à C en 1999 de la norme ISO, Visual Studio ne prend pas en charge. Vous devriez poster que comme une réponse.
  • Vous êtes en manque de l' #include <stdio.h>, en plus de la #include pour ce que l'en-tête définit getch (<conio.h>, je pense).
  • Juste assez, @KeithThompson, ce que je pensais, mais ça fait un moment. Je ne pense pas que son exemple était censé compiler complètement. Depuis, il ne retourne pas une valeur de main (), soit.
  • Pas de retour d'une valeur de main() n'est pas illégal. En C89/C90, elle renvoie un statut non défini pour l'environnement. En C99, il est équivalent à return 0;.
  • J'ai été un peu facétieuse, mais oui.
  • Il serait plus facile de faire de l'attribution initiale pour i dans le for boucle: int i; for (i = 1; i <= 5; i ++) .... (Vous pouvez déclarer qu'il n'ainsi si MS pris en charge C99.)
  • Merci, j'apprécie l'aide. Ça fonctionne maintenant

InformationsquelleAutor eLg | 2013-03-29