[C/C++] 'usleep' was not declared

Résolu/Fermé
FoX - Modifié par FoX le 15/06/2010 à 15:42
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 15 juin 2010 à 21:13
Bonjour,

Après maintes recherches, je bloque sur une chose:

J'ai fais un programme il y a quelques temps sous Linux que j'aimerais reprendre sous windows, or Code::Blocks me trouve une erreur de type: 'usleep' was not declared in this scope.

Voilà le code, si cela peut vous aider:

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "f_video.h" 

int main(void){ 
 unsigned int X, Y; /* Declaration des variables de coordonnées */ 
 signed int dX, dY; /* Delta X et Delta Y, pour le déplacement de la balle */ 
 char ball; /* Variable de la balle */ 

 ball = 'O'; /* Code ASCII de O */ 
 srand(time(NULL)); /* Définie un temps nul */ 
 Clrscr(); /* Efface le contenu de l'écran */ 

 /* Valeur aléatoire prise par X et Y */ 
 X = 1+(int) ((80.0*rand())/(RAND_MAX+1.0)); 
 Y = 1+(int) ((24.0*rand())/(RAND_MAX+1.0)); 
 /* Valeur aléatoire prise par la dérivée de X et de Y */ 
 dX = 1+(int) ((10.0*rand())/(RAND_MAX+1.0)); 
 if (dX >= 5) { 
  dX = 1; 
 } else { 
  dX = -1; 
 } 
 dY = 1+(int) ((10.0*rand())/(RAND_MAX+1.0)); 
 if (dY >= 5) { 
  dY = 1; 
 } else { 
  dY = -1; 
 } 
 /* La balle doit partir de la valeur aléatoire */ 
 while (1) { 
 Gotoxy(X,Y); /* Déplace le curseur en X et en Y */ 
 printf("%c", ball); 
 fflush(stdout); /* Forcer l'affichage */ 
 Gotoxy(X,Y); 
 printf(" "); /* Affiche un espace remplaçant l'ancien caractère */ 
 if (X == 1) { 
  dX = 1; 
 } 
 if (X == 80) { 
  dX = -1; 
 } 
 if (Y == 1) { 
  dY = 1; 
 } 
 if (Y == 24) { 
  dY = -1; 
 } 

 X = X + dX; 
 Y = Y + dY; 
 usleep(500000); 

 } 
return 0; 
}


J'ai tenté de mettre l'include <windows.h> en utilisant la fonction Sleep(), mais il me sort de nouvelles erreurs:

D:\Dev\Cours - Info Iris\PremierC\Exercice11\ball.o:ball.c:(.text+0x43)||undefined reference to 'Clrscr()'| 
D:\Dev\Cours - Info Iris\PremierC\Exercice11\ball.o:ball.c:(.text+0x16d)||undefined reference to 'Gotoxy(int, int)'| 
D:\Dev\Cours - Info Iris\PremierC\Exercice11\ball.o:ball.c:(.text+0x1a3)||undefined reference to 'Gotoxy(int, int)'| 
||=== Build finished: 3 errors, 0 warnings ===|


Je pense que là il n'arrive pas à lire le "f_video.h" ?

f_video.h
void Clrscr(); //efface le contenu de l'ecran 
void Gotoxy(int,int); // deplace le curseur en x et y 
void f_video_N(); // remet le mode video en normal 
void f_video_I(); // place la video en mode inverse


Même en incluant cette bibli dans les includes de C::B, cela n'y change rien.

Cela fait vraiment longtemps que je n'ai pas touché du C ... et je me sens un peu largué.

Merci d'avance pour votre aide,


3 réponses

ludolepro Messages postés 60 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 25 avril 2012 35
15 juin 2010 à 17:28
Essaye de faire ca (sans garantie...) :
#include <unistd.h>

Mais c'est pratiquement sur un probleme de bibliothèque non importé ...
Tiens nous au courant si c'est ca !
8
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
15 juin 2010 à 21:13
Te tracasses pas c'est normal:
- sleep est définie dans la norme Posix,
- usleep est définie dans la norme Unix98.
Reste sous Linux, car les 'unistd.h' correspondants n'existent que sous Unix ;-)
Bonne continuation.
1
Ca ne change rien, usleep() (ou sleep() ) n'est toujours pas reconnue...

Il ni a que Sleep() avec <windows.h> qui passe, mais je ne sais pas si il fonctionne, car je n'arrive pas à lire les fonctions Gotoxy(x,y) et Clrscr() de ma "f_video.h"!

Que faire.. ?
0