Bonjour,
Je voudrais juste une confirmation
Sur un processeur 32bits les adresses en C++ sont stockées sur 32 bits.
Donc on peut stocker cette valeur dans un long ?
Merci.
Bonjour,
Je voudrais juste une confirmation
Sur un processeur 32bits les adresses en C++ sont stockées sur 32 bits.
Donc on peut stocker cette valeur dans un long ?
Merci.
les tailles des adresses sont les tailles des pointeursLe pointeurs sont faits justement pour stocker des adresses... Il est inutile (et dangeureux dans certaines mesures) de les stocker dans autre chose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part sizeof(void*);
Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)
C'est complétement dépendant de l'architecture.Sur un processeur 32bits les adresses en C++ sont stockées sur 32 bits
Il me semble qu'il y a un type standard pour ça ; à la manière de std::size_t pour les tailles.Donc on peut stocker cette valeur dans un long ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
je dois faire correspondre la structure FILE avec une structure FILE_2 qui m'est propre.
Je veut donc mettre l'adresse de FILE dans un champ de FILE_2 car pour l'utilisateur doit manipuler le type FILE_2 et ne peut en aucun cas le changer. La structure FILE_2 contenant un long...
N'y a-t'il pas un "standard", pour les processeurs récents équipant les PC grand public et sous Windows par exemple (P IV, AThlon...)
Mais pourquoi ne le stockes tu pas simplement dans un void*? Ne peux tu pas modifier ton type FILE_2?
Si tu cherches le bon type alors c'est FILE*, pas un type entier.
Si tu ne cherches pas le bon type alors tu cherches quoi au juste ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Merci
Pour la rapidité des réponses !!!
Je vais laisser comme ca de toute facon je n'ai pas beaucoup le choix.
Y'a intptr_t sinon je crois
Si tu ne peux pas modifier FILE_2, il n'y a rien que tu puisses faire. Tu es bloqué avec un design tout pourri. Et il ne te reste qu'à espérer de toujours avoir sizeof(FILE*) <= sizeof(long). A la limite, tu peux rajouter une assertion statique dans ton code. Et mettre en commentaire à côté (si jamais cela devait ne pas compiler) comme quoi quelqu'un a eu deux drôles d'idées de design (mettre un FILE* dans un long, et avoir une subtituabilité bourrine via un reinterpret_cast pour extraire le FILE * (si j'ai bien compris ce que tu as décris)).
Il te faut aussi prier que les tailles soient bien égales sinon, d'une plateforme à l'autre, c'est le coup à ce que les données soient mal alignées et que tu n'extrais pas la bonne addresse. Un enum pourrait sauver la mise, mais il ne permettrait pas pour autant la substituabilité par reinterpret_cast<>.
Des assertions statiques et des prières. C'est tout ce que tu as à ta disposition![]()
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
En effet, un pointeur tient dans un long sous beaucoup de plate-formes 32bits et certaines plate-formes 64bits (notamment, PAS sous Win64), mais rien n'est garanti sans utiliser un type approprié (intptr_t standard, INT_PTR et sa bande sous Windows...).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ah bon ?(notamment, PAS sous Win64)
Il me semblait qu'un long faisait 64 bits avec GCC sur AMD64.
Partager