Problème lors d'une compilation en C

Résolu
Bonjour,

J'ai écris un code source très simple (afficher "helloworld") mais lorsque je veux le compiler avec gcc, il me dit:

helloworld.c:11:114: error: expected identifier or `(' before `~' token

Ce que je ne comprend pas c'est que la "~" est d'origine sur toutes les lignes qui ne sont pas rempli. Il me demande de de rajouter une parenthèse ouverte à la fin?
D'avance, merci

9 réponses

  1. Contributeur
    Salut.
    Donne ton code source.
    --
    La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
    Char Snipeur
    1. Contributeur
      Dis comme ça on dirait du racket ;) Nan je plaisante.
      Mais les ""~" sur toutes les lignes" ça sent le
      vi
      /
      vim
      ...
    2. Effectivement c'est du vi
  2. Voici le code source:

    #include <stdio.h>

    int main()
    {
    printf("Hello, world!\n");
    return 0;

    }
    1. Contributeur
      Tout semble correct (excepté l'éventuel
      void
      manquant dans les paramètres de
      main
      ).
      Quelle est ta ligne de compilation avec
      gcc
      ?
    2. gcc helloworld.c
    3. Contributeur
      As-tu déjà compilé autre chose avec
      gcc
      ? C'est
      stdio.h
      qui semble avoir un problème; tout est installé comme il faut? (pas de problème de paquet corrompu ou autre?) Tente de désinstaller/réinstaller voire mettre à jour le paquet
      libc6-dev
      dans ton gestionnaire de paquet.
    4. Non en fait c'est mon tout premier programme
      J'esserais plus tard pour les paquets car je suis pas le su
      merci quand même
  3. Contributeur
    C'est peut être un caractère de fin de ligne ou invisible (ascii de 1 à 10) qui te cause des soucis.
    Ce programme est cours, retape le dans un nouveau fichier (pas de copier coller pouvant recopier le caractère défectueux) et compile.
    1. Contributeur
      Ce que je ne comprend pas c'est qu'il n'y a pas de ~ dans le code source...
      Pour test, supprime le printf et le include, et retourne une valeur de 123. En gros:
      int main(){return 123;}

      Donne nous le message d'erreur en entier.
      1. Il affiche la même réponse qui c'est décalée de ligne.
        Le coup de la ~, c'est ce qui est afficher sur toutes les autres lignes vierges en vi. Je pense qu'il veut dire à la fin
        1. Contributeur
          Les "~" de vi sont en fait des caractères de remplissage, ils n'existent pas dans le fichier.
          Si tu veux, met plein de lignes vides dans ton fichier, les ~n'apparaiteront plus dans vi.
          Ba là, je ne comprends vraiment pas le problème.
          gcc -c helloworld ? gcc -fPIC -c helloworld ?
          1. Quand le code source a une erreur, je le rouvre avec un éditeur de texte (Kwrite) et les ~ sont là, c'est normal?
            1. Contributeur
              non. Supprime les et recompile.
              Si c'est ça, le problème vient possiblement de vi.
          2. tiens, un truc plus drôle, je me suis amusé à effacer toutes les lignes (donc les ~) à part le code source et quand je lui demande de compiler, il ne fait strictement rien:

            *****@linux-4kq5:~> gcc helloworld2.c
            *****@linux-4kq5:~> gcc helloworld2.c
            1. Contributeur
              Si, si, il compile bien: il ne s'est plaint de rien. Comme tu n'as pas précisé d'option
              -o [nom executable de sortie]
              , le programme compilé se nomme
              a.out
              et se lance avec
              ./a.out
            2. Ça y est!
              Premier programme exécuté, je suis juste obligé d'effacer les "~" avant de compiler mais ce n'est qu'un problème mineur.
              Encore merci à tout le monde!