IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

getch, wgetch...


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut getch, wgetch...
    étant novice du c, et qui plus est sous linux, je me demandais pourkoi ma compilation me renvoie un message d'erreur qd j'utilise la fonction getch()... (je pensais kelle se trouvait ds la lib curses)

    qu'est la fonction wgetch (donnée ds le mesg d'erreur) ?

    et aussi, y a til bp de diff entre les fonctions du C sous linux par rapp à windows ?

    merci

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut Re: getch, wgetch...
    Citation Envoyé par drKzs
    étant novice du c, et qui plus est sous linux, je me demandais pourkoi ma compilation me renvoie un message d'erreur qd j'utilise la fonction getch()... (je pensais kelle se trouvait ds la lib curses)

    qu'est la fonction wgetch (donnée ds le mesg d'erreur) ?
    C'est un peu l'equivalent de getch sauf que tu peux choisir une fenetre. Elle ne sert a rien si tu n'as pas cree de sous fenetres

    Citation Envoyé par drKzs
    et aussi, y a til bp de diff entre les fonctions du C sous linux par rapp à windows ?
    Ca depend des fonctions. Il faut essayer de te conformer a une norme (comme POSIX par exemple).

    Sinon as tu compiler ton programme avec la ilibrairie curses ? Ca doit etre ca.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut
    oui, g bien la librairie curses (version 5.2) pourtant...... logiquement je devrais pouvoir utiliser getch().....

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut
    il doit y avoir autre chose......
    si j'utilise getch, g un message "undefined reference to wgetch" ...(??)
    ^^^^^

    si j'utilise sqrt --> message "undefined reference to sqrt" (deja + logique)


    pourtant g bien math.h et curses.h (g vérifié)

    quelle est l'explication ?

  5. #5
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    Billets dans le blog
    1
    Par défaut
    Il faut que ton programme soit lié aux bibliothèques correspondantes : option -lncurses pour wgetch, -lm pour sqrt.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut
    je dois faire ça lors de la compilation ? en parametre à la commande gcc ?

    je pensais que le fait d'indiquer
    #include <bibli.h>
    suffisait pour utiliser les fonctions de la lib "bibli"

  7. #7
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    Billets dans le blog
    1
    Par défaut
    Je t'explique brièvement :
    Le compilateur a besoin de connaître les fonctions présentes dans les librairies et leur syntaxe. C'est le rôle du .h. Mais il se contente juste de dire par exemple que sqrt prend un double et sort un double, et sera défini "quelque part".
    Le lieur se charge lui de relier les différents sources et les bibliothèques entre elles pour créer le fichier exécutable. L'option -lXXX permet d'inclure la librairie XXX.

    Pour stdlib.h, stdio.h, tout est défini dans la librairie standard à laquelle tout programme est automatiquement lié. Mais ce qu'il y a dans ncurses.h et math.h sont dans d'autres librairies ; il faut donc inclure le .h à la compilation (pour que le compilateur connaisse la syntaxe des fonctions) et la librairie à la liaison (pour le lieur sache où se trouve le code).

    Quand tu fais :En fait, tu appelles le compilateur, puis le lieur à la fois.

    Quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gcc -c test.c
    gcc -o prog test.o
    Tu compiles (avec la première commande) et tu lies (avec la deuxième commande).

    Les options de bibliothèques doivent être passées à la commande de liaison, mais si tu compiles et tu lies en même temps tu peux à la fois utiliser les options de compilation (comme -Wall) et celle de liaison (comme -lm). il n'y a pas de problème. Par exemple ceci est correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o prog test.c -Wall -lm
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut
    ok, merci pour l'explication, je vois déjà un plus gros morceau de l'iceberg

    juste une question par curiosité, quel est l'intéret de faire la 1ere manip (gcc -c; gcc -o), si on peut faire de mê en une seule commande ?


    en tt k merci, tu me sauves la vie (du moins pour la semaine) !

  9. #9
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par drKzs
    juste une question par curiosité, quel est l'intéret de faire la 1ere manip (gcc -c; gcc -o), si on peut faire de mê en une seule commande ?
    Pour un fichier source, c'est clair qu'il n'est pas utile de procéder ainsi. Je ne l'ai mis que pour être exhaustif.

    Mais quand tu as un lourd projet avec beaucoup de fichiers sources, il est plus rapide, lorsque tu modifies un seul fichier, de ne compiler que ce fichier et de lier, sans recompiler les autres fichiers, d'où l'intérêt de séparer compilation et liaison (et en utilisant un Makefile pour automatiser le processus).

    Citation Envoyé par drKzs
    en tt k merci, tu me sauves la vie (du moins pour la semaine) !
    No PaniC, je serais là les autres semaines aussi
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. debutant: pb avec getch
    Par richton95 dans le forum C
    Réponses: 27
    Dernier message: 01/10/2005, 09h22
  2. diffrérence entre getch et getche ?
    Par Le Pharaon dans le forum C
    Réponses: 5
    Dernier message: 16/09/2005, 18h04
  3. getch()
    Par zbooon dans le forum Réseau
    Réponses: 5
    Dernier message: 11/09/2005, 19h51
  4. Le buffer clavier avec cin, et getch()
    Par Info420 dans le forum SL & STL
    Réponses: 1
    Dernier message: 06/12/2004, 12h45
  5. getch() avec gcc
    Par Jorus dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 16/12/2002, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo