[C] #define pour une fonction
Fermé
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
-
26 juil. 2010 à 13:07
kaham Messages postés 180 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 29 juil. 2010 à 13:27
kaham Messages postés 180 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 29 juil. 2010 à 13:27
A voir également:
- [C] #define pour une fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction somme excel - Guide
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
10 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 juil. 2010 à 20:22
27 juil. 2010 à 20:22
Ou tout simplement, tu installes la bibliothèque nCurses sur Windows : PDCurses.
Cdlt,
Cdlt,
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 juil. 2010 à 14:10
26 juil. 2010 à 14:10
salut.
Le préprocesseur travail juste sur le texte : donc impossible d'avoir un nombre d'argument variable.
ncurse n'existe pas pour windows, ça serait le plus simple.
Une solution serait de faire une fonction gotoxy_portable() prenant un nombre d'argument variable et d'appeler la fonction qui va bien.
Le préprocesseur travail juste sur le texte : donc impossible d'avoir un nombre d'argument variable.
ncurse n'existe pas pour windows, ça serait le plus simple.
Une solution serait de faire une fonction gotoxy_portable() prenant un nombre d'argument variable et d'appeler la fonction qui va bien.
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
27 juil. 2010 à 19:57
27 juil. 2010 à 19:57
Salut,
C'est domage je voulais trouvé une réponce simple avec les macros du langage C.
Si pas oui je vais devoir réécrire une fonction mvprintw(); pour windows.
Je n'aurais qu'a ajouter un header avec ma fonction quand je recompile sous windows.
C'est domage je voulais trouvé une réponce simple avec les macros du langage C.
Si pas oui je vais devoir réécrire une fonction mvprintw(); pour windows.
Je n'aurais qu'a ajouter un header avec ma fonction quand je recompile sous windows.
Dr.W
Messages postés
390
Date d'inscription
jeudi 15 avril 2010
Statut
Membre
Dernière intervention
29 juin 2011
40
Modifié par Dr.W le 27/07/2010 à 20:34
Modifié par Dr.W le 27/07/2010 à 20:34
#if defined (linux)
// code
#endif
T'as le #else et le #elif qui te serviront aussi je pense.
// code
#endif
T'as le #else et le #elif qui te serviront aussi je pense.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
27 juil. 2010 à 22:57
27 juil. 2010 à 22:57
ha merci, c'est ce que je cherchais.
Plus besoin de faire de fonction ^^
Plus besoin de faire de fonction ^^
Dr.W
Messages postés
390
Date d'inscription
jeudi 15 avril 2010
Statut
Membre
Dernière intervention
29 juin 2011
40
Modifié par Dr.W le 27/07/2010 à 23:13
Modifié par Dr.W le 27/07/2010 à 23:13
T'as pas vu mon message en commentaire? Tu peu faire autant de code source par archi que tu veu....
Si t'a envie tu peu mettre le #if defined dans le code directement pour changer juste une ligne en fonction de l'archi !
Si t'a envie tu peu mettre le #if defined dans le code directement pour changer juste une ligne en fonction de l'archi !
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
28 juil. 2010 à 13:24
28 juil. 2010 à 13:24
non désolé, autant pour moi.
Pour ta solution, mon programme devra etre plus long a réalisé. Car je vais devoir faire :
#ifdef windows
gotoxy(x_pos, y_pos); printf("ma valeur est : %d", val);
#else
mvprintw(x_pos, y_pos, "ma valeur est : %d", val);
#endif
et cela pour chaque ligne ou j'utilise la fonction mvprintw(); dans mes programmes il y en a pas mal des fois. Mon but serai d'uitlisé mvprintw(); comme fonction principal, voir a la recreer sous windows mais vu que PDncurses existe déja pas besoin de le faire.
Pour ta solution, mon programme devra etre plus long a réalisé. Car je vais devoir faire :
#ifdef windows
gotoxy(x_pos, y_pos); printf("ma valeur est : %d", val);
#else
mvprintw(x_pos, y_pos, "ma valeur est : %d", val);
#endif
et cela pour chaque ligne ou j'utilise la fonction mvprintw(); dans mes programmes il y en a pas mal des fois. Mon but serai d'uitlisé mvprintw(); comme fonction principal, voir a la recreer sous windows mais vu que PDncurses existe déja pas besoin de le faire.
Dr.W
Messages postés
390
Date d'inscription
jeudi 15 avril 2010
Statut
Membre
Dernière intervention
29 juin 2011
40
28 juil. 2010 à 14:00
28 juil. 2010 à 14:00
Oui c'est sur que c'est plus simple ;)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 28/07/2010 à 19:37
Modifié par fiddy le 28/07/2010 à 19:37
C'est pour ce genre de problème qu'il est conseillé de séparer le code portable (standard) du reste.
Par exemple, dans ton cas, tu aurais dû te créer une fonction ecrireXY(int x, int y) dans un fichier à part.
La fonction aurait été très simple avec un simple #ifdef. Si t'es sous Win, tu utilises gotoxy, sinon mvprintw.
Ainsi, tu n'as jamais beaucoup de changement à faire.
D'ailleurs, dans le même ordre d'idée, si PDCurses n'existait pas, tu aurais pu te créer la fonction mvprintw (avec un #ifdef pour pas qu'elle soit prise en compte sur Windows). Cette fonction aurait appelé gotoxy.
Cdlt,
Google is your friend
Par exemple, dans ton cas, tu aurais dû te créer une fonction ecrireXY(int x, int y) dans un fichier à part.
La fonction aurait été très simple avec un simple #ifdef. Si t'es sous Win, tu utilises gotoxy, sinon mvprintw.
Ainsi, tu n'as jamais beaucoup de changement à faire.
D'ailleurs, dans le même ordre d'idée, si PDCurses n'existait pas, tu aurais pu te créer la fonction mvprintw (avec un #ifdef pour pas qu'elle soit prise en compte sur Windows). Cette fonction aurait appelé gotoxy.
Cdlt,
Google is your friend
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
29 juil. 2010 à 00:12
29 juil. 2010 à 00:12
oui l'idée est pas mal. Le seule problème que je rencontre est que la fonction mvprintw() est une fonction qui combine le gotoxy() et le printf()
le prototype de mvprintw() est le suivant :
mvprintw(const int x_pos, const int y_pos, char*, ...)
exemple :
mvprintw(x_pos, y_pos, "Ma valeur est : %d, ce qui donne %x en hexa", val, val);
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Si je crée une fonction ecrireXY() je doit tenir compte des parametres que je vais passer au printf et au mvprinw. Ce qui n'est pas la solution la plus facile vu que mvprinw() est disponible sous windows avec PDncurses.
le prototype de mvprintw() est le suivant :
mvprintw(const int x_pos, const int y_pos, char*, ...)
exemple :
mvprintw(x_pos, y_pos, "Ma valeur est : %d, ce qui donne %x en hexa", val, val);
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Si je crée une fonction ecrireXY() je doit tenir compte des parametres que je vais passer au printf et au mvprinw. Ce qui n'est pas la solution la plus facile vu que mvprinw() est disponible sous windows avec PDncurses.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
29 juil. 2010 à 08:29
29 juil. 2010 à 08:29
le prototype de mvprintw() est le suivant :
mvprintw(const int x_pos, const int y_pos, char*, ...)
Bien sûr, quand je parle d'écrire la fonction ecrireXY(), c'est au sens large. Je dis juste que dans l'idéal d'un projet où on est amené à utiliser des fonctions non portables, on s'écrit soit même la fonction et on exporte la définition de la fonction dans un autre fichier. Car, après, on se retrouve dans des cas comme le tien. Et encore t'as de la chance qu'une bibliothèque existe.
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Oui, cela se fait sans problème en C.
Ce qui n'est pas la solution la plus facile vu que mvprinw() est disponible sous windows avec PDncurses.
Ce n'est pas la solution la plus facile, mais de loin la plus propre et la plus facile en maintenabilité dans des cas où une bibliothèque n'est pas externalisée...
mvprintw(const int x_pos, const int y_pos, char*, ...)
Bien sûr, quand je parle d'écrire la fonction ecrireXY(), c'est au sens large. Je dis juste que dans l'idéal d'un projet où on est amené à utiliser des fonctions non portables, on s'écrit soit même la fonction et on exporte la définition de la fonction dans un autre fichier. Car, après, on se retrouve dans des cas comme le tien. Et encore t'as de la chance qu'une bibliothèque existe.
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Oui, cela se fait sans problème en C.
Ce qui n'est pas la solution la plus facile vu que mvprinw() est disponible sous windows avec PDncurses.
Ce n'est pas la solution la plus facile, mais de loin la plus propre et la plus facile en maintenabilité dans des cas où une bibliothèque n'est pas externalisée...
kaham
Messages postés
180
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
29 juil. 2010 à 13:27
29 juil. 2010 à 13:27
Effectivement c'est plus propre et mon professeur ne sera certainement pas d'accord que j'utilise une nouvelle lib a la place de myconio.h
Par contre il n'a rien contre le fait que je crée une fonction qui facilite l'écriture des gotoxy() et printf()
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Oui, cela se fait sans problème en C.
Mais il faut que je face cela avec les connaissances du cours je ne doit pas utilisé autre chose que ce que l'on a vu et c'est la que je suis coincé car les chaines de caractere on les a survolé. Il ma dit que si je ne faisais trop compliqué ca passerais.
Mais même si je crée cette fonction hors cadre du cours elle pourras toujours me servir quand je passe de linux a windows.
Par contre il n'a rien contre le fait que je crée une fonction qui facilite l'écriture des gotoxy() et printf()
Il faut donc creer une fonction qui analyse la chaine passé en parametre et remplacer tout les caractere %[a-z] par la variable correspondante passé en parametre. Et le nombres de ces variables n'est pas fixe.
Oui, cela se fait sans problème en C.
Mais il faut que je face cela avec les connaissances du cours je ne doit pas utilisé autre chose que ce que l'on a vu et c'est la que je suis coincé car les chaines de caractere on les a survolé. Il ma dit que si je ne faisais trop compliqué ca passerais.
Mais même si je crée cette fonction hors cadre du cours elle pourras toujours me servir quand je passe de linux a windows.