char FAR *toto ?! kesako ? [VC++] - C++ - Programmation
Marsh Posté le 28-08-2003 à 08:43:58
Ca date de l'époque du DOS ou la mémoire était segmentée en blocs de 64 Ko. Quand tu déclarais une variable en FAR, tu indiquais au compilo que tu voulais que cette variable soit dans un segment différent du segment courant
Marsh Posté le 28-08-2003 à 08:46:28
mais pourquoi alors qd je mets un char * au lieu du char FAR * il chie ? ca devrais passer maintenant ac le compilo de Vc++ ?!
Marsh Posté le 28-08-2003 à 08:58:31
void fonction(char far *p);
char *r ;
fonction(static_cast<char far *>(r)) ;
Marsh Posté le 28-08-2003 à 09:08:03
hum hum, zarbe :-p!
j'ai fais ca et ca marche partout, sauf sur un poste, il me renvoie du caca, il est sur XP pro mais ca fonctionne sur les autres XP Pro ou 2000Pro...bizzare koi!
char *tetedezob(char FAR buffer[64])
{
char str[64];
/*
.....
*/
for (int i = 4; i != (64 - phe->h_length);i++)
str[i - 4] = phe->h_addr_list[I][i];
return (str);
}
merci a vous, je sais ce que c'est un char FAR * maintenant :-p!
Marsh Posté le 28-08-2003 à 09:48:27
husiana a écrit :
|
Tu renvoies une variable locale !!! Tu as de la chance que ça marche sur certaines machines.
Et sinon, il me semble que FAR est défini dans les headers Windows comme ne correspondant à rien (#define FAR), donc tu n'as même pas besoin de cast.
Marsh Posté le 28-08-2003 à 10:06:35
[citation=500262,1]
Tu renvoies une variable locale !!! Tu as de la chance que ça marche sur certaines machines.
[/citation]
On a plutot de la chance que son programme ne marche pas sur une machine.. Son bug aurait pu passer inaperçu..
LeGreg
Marsh Posté le 28-08-2003 à 10:37:19
merci les gens, BUG resolu, tt marche niquel!
sympatoche :-p!
Marsh Posté le 28-08-2003 à 08:39:06
voila, j'ai trouvé ca, dans un char FAR * ils stockent le nom de l'ordinateur, comment faire pour le mettre dans un char*, et qu'est-ce qu'un char FAR * ??!!
merci :-p
---------------
http://husiana.myftp.org/phpsysinfo