probleme de cast - C++ - Programmation
Marsh Posté le 14-12-2004 à 17:06:46
Tu fais le cast comment ? Comme en C ou avec les trucs du C++ ? Essaie avec reinterpret_cast ; dans la doc de C++Builder ils disent "A pointer can be explicitly converted to an integral type.", reste à espérer que ça marche pareil chez toi
Marsh Posté le 14-12-2004 à 17:08:00
c'etait fait comme en C
je vais tenter le reinterpret_cast
Marsh Posté le 14-12-2004 à 17:08:00
ouais tu le fait comment. Et surtout, t'es surquoi comme architecture ?
Marsh Posté le 14-12-2004 à 17:08:14
Taz a écrit : ouais tu le fait comment. Et surtout, t'es surquoi comme architecture ? |
HP 64bits
tu penses que c'est parce qu'en 64 bits faudrait le caster en long ?
Marsh Posté le 14-12-2004 à 17:16:54
oui. Et faut surtout faire attention à l'alignement.
long ou long long, selon le modèle.
Cela dit, qu'est-ce qui t'empêche de garder tes pointeurs tels quels ?
Marsh Posté le 14-12-2004 à 17:20:11
Les int sont pas aussi en 64 bits sur une plateforme 64 bits ?
Marsh Posté le 14-12-2004 à 17:20:15
Taz a écrit : oui. Et faut surtout faire attention à l'alignement. |
c'est pour utiliser dans une fonction de comparaison d'une hash.
En fait on caste pas en int a proprement parler mais en (voHashKey), mais bizarrement sous HP le voHashKey est un int, ce qui est pas forcement top
Qu'est ce que t'entends par long ou long long suivant le modele ?
Marsh Posté le 14-12-2004 à 17:20:34
antp a écrit : Les int sont pas aussi en 64 bits sur une plateforme 64 bits ? |
a priori non, c'est les long qui sont en 64 bits
Marsh Posté le 14-12-2004 à 17:22:45
joce a écrit : HP 64bits |
size_t il est pas la pour ca ?
Marsh Posté le 14-12-2004 à 17:24:50
chrisbk a écrit : size_t il est pas la pour ca ? |
je suis pas responsable du layer pourri qu'il y a en dessous (surtout quand je vois les commentaires )
Marsh Posté le 14-12-2004 à 17:30:54
bin bonne chance, parce que caster du pointeur en entier, c'est pas forcement la meilleur chose a faire...
Marsh Posté le 14-12-2004 à 17:39:51
chrisbk a écrit : bin bonne chance, parce que caster du pointeur en entier, c'est pas forcement la meilleur chose a faire... |
/*
* For 64bit, we require a 64bit hash key. We'll use a typedef here,
* to retain backward compatibility
*
* NB: (30 June 99) igf:
* I'm backing this out due to time contraints. Will switch on 64 bit later...
*/
tu m'etonnes que ca marche pas
Marsh Posté le 15-12-2004 à 12:04:17
pourquoi tu veux absolument mettre tes pointeurs dans des int ?
Marsh Posté le 15-12-2004 à 14:04:15
uintptr_t c'est pas 32 bits a priori sur du HP64, c'est 64 bits (c'est un unsigned long)
Marsh Posté le 15-12-2004 à 14:09:04
Taz a écrit : pourquoi tu veux absolument mettre tes pointeurs dans des int ? |
si j'ai bien compris, il a pas le choix
Marsh Posté le 15-12-2004 à 14:10:36
non, mais ça d'accord, je veux juste comprendre pourquoi tu veux foutre tes pointeurs dans des entiers ?
tu peux très bien t'en servir de clef, avec une fonction de hash trivial ((p & 0xffffffff00000000ULL) >> 32) ^ (p & 0x00000000ffffffffULL) par exemple
Marsh Posté le 14-12-2004 à 16:54:18
J'ai un probleme de cast avec le compilo HP (avec un compilo Sun ca marche).
J'ai une structure qui s'appelle pouet on va dire.
je veux caster pouet* en int pour l'utiliser dans une table de hash, mais le compilo m'envoie chier :
line 127: Error: Cannot cast from pouet* to int.
j'ai essaye de caster en void* avant de caster en int, meme combat :
line 127: Error: Cannot cast from void* to int.
Faut faire quoi pour que ca passe ?