Putchar et write
kaervas
-
kaervas -
kaervas -
Bonjour, j'utilise VisualC++ 6 et je programme en C, je ne veux pas utiliser d'include, et j'ai recoder certaines fonctions système, mais j'ai un problème avec "ma" version de putchar, j'utilise write (là je suis bien obliger d'utiliser une fonction system, à moins qu'on puisse la recoder aussi?), je la prototype, et j'ai le message d'erreur suivant :
1.obj : error LNK2001: unresolved external symbol "void __cdecl write(int,void *,int)" (?write@@YAXHPAXH@Z)
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
Quelqu'un pourrait m'aider?
Le code que j'ai utiliser pour my_putchar :
void write(int fd, void *tamp,int n);
void my_putchar(char c)
{ write(1, &c, 1); }
1.obj : error LNK2001: unresolved external symbol "void __cdecl write(int,void *,int)" (?write@@YAXHPAXH@Z)
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
Quelqu'un pourrait m'aider?
Le code que j'ai utiliser pour my_putchar :
void write(int fd, void *tamp,int n);
void my_putchar(char c)
{ write(1, &c, 1); }
4 réponses
Euh normalement :
Mais pourquoi tu ne veux pas utiliser d'include ??
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t count);
Mais pourquoi tu ne veux pas utiliser d'include ??
J'ai envie de me refaire les libs et de ne travailler qu'avec ce que j'ai fait, pour l'experience :)
merci pour la reponse mais il y a encore un include, j aimerais avoir le code exact que l include utilise pour faire marcher write (en plus je n ai pas pu tester cet include parcequ a priori windows ne l a pas!)
merci pour la reponse mais il y a encore un include, j aimerais avoir le code exact que l include utilise pour faire marcher write (en plus je n ai pas pu tester cet include parcequ a priori windows ne l a pas!)
Ben ouvre le fichier inclu et tu verras le code (plus exactement le fichier source associé à ce header).
Enfin pour la culture c'est bien mais sinon je vois pas trop l'interêt. Il y a des centaines de gourous qui se sont pris la ête à faire un truc qui marche, pourquoi ne pas le réutiliser ?
Et pour ton excuse sur les include tu invoques la protabilité. Sache qu'il suffit de changer à ce moment là les headers spécifiques linux inclus avec une option de compilation (idem avec windows). Par exemple :
Et à la compilation (sous linux par exemple)
Et encore, la majorité des include "classiques" sont communs entre les deux OS...
Bonne chance
Enfin pour la culture c'est bien mais sinon je vois pas trop l'interêt. Il y a des centaines de gourous qui se sont pris la ête à faire un truc qui marche, pourquoi ne pas le réutiliser ?
Et pour ton excuse sur les include tu invoques la protabilité. Sache qu'il suffit de changer à ce moment là les headers spécifiques linux inclus avec une option de compilation (idem avec windows). Par exemple :
#ifdef LINUX #include <unistd.h> #endif #ifdef WINDOWS #include <...> #endif
Et à la compilation (sous linux par exemple)
gcc -DLINUX plop.c
Et encore, la majorité des include "classiques" sont communs entre les deux OS...
Bonne chance
J'avais ouvert stdio.h pour voir ce qu'il y avait comme code pour putchar mais je n'ai rien compris.. Il faisait un define de write en mettant en macro un putc, si je me souviens bien, enfin je n'ai pas tout saisi..
Pour la lib oui je n'ai pas d'excuse.. en fait je viens de netbsd et j'avais deja recode mes libs, et write ne me posait pas de prob sans mettre d'include, meme avec un gcc -Wall -pedantic, c'est pour ca que je trouvais le probleme etrange sous windoze.
Pour la lib oui je n'ai pas d'excuse.. en fait je viens de netbsd et j'avais deja recode mes libs, et write ne me posait pas de prob sans mettre d'include, meme avec un gcc -Wall -pedantic, c'est pour ca que je trouvais le probleme etrange sous windoze.