http://sites.estvideo.net/yaro/gfx/forumti.gif
@_ö
(15:39)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo + 17 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « Précédent - 2/2 - » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (49r) » Déclarations et consteries
./29 - REPRISE AUTOMATIQUE DU MESSAGE PRECEDENT
10.06.2001 - 33210
04:23  Kevin Kofler - Posté : 10-02-2010  M

Ce n'est pas normal de devoir écrire ce genre de casts, c'est plutôt un indice que tu essaies d'écrire du C comme si c'était de l'assembleur. #hehe#

avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
./Publicité AdSense
./30
16.06.2001 - 59980
08:44  squalyl - Posté : 10-02-2010  M

pareil :D

ça raye les yeux ce cast :D


pourquoi pas FilePtr + FileSize - 5?

d'ailleurs ça va foirer pour autre chose que du x86

./31
18.06.2001 - 25907
10:20  Folco - Posté : 10-02-2010  M

Le truc, c'est que mon FilePtr est le résultat d'un HeapDeref, donc un void*

Puis je dois calculer l'offset du char FilePtre + FileSize - 5 (merci squalyl, j'y ai pensé j'étais déjà couché :D). Je dois donc caster en char*
Puis il me faut un void pour memcmp, donc re-cast en void*.
Ya un autre moyen ?

Il vut pas de l'opérateur & quand j'écris ça :
(void*)&((char*)FilePtr + FileSize - 5)

D'abord je comprends pas pourquoi, et ensuite je vois pas comment faire autrement qu'éviter ces deux casts...

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./32
15.06.2003 - 7597
10:22  GoldenCrystal - Posté : 10-02-2010  @_ö

Normalement y'a pas besoin de cast en void*.
Et tu peux pas obtenir un pointeur sur une valeur :p

avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./33
18.06.2001 - 25907
10:29  Folco - Posté : 10-02-2010  M

Eh merde... je m'en doutais.... alors je fais comment pour récupérer ce p**ain de pointeur en plein milieu de mon tableau ? J'ai essayé de fooler le compilo avec diverses écritures hier soir, sans y arriver :/

Mais le cast en char* reste obligatoire, ça se déréférence par un void* ... Bref, ça reste pas splendide...

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./34
16.06.2001 - 59980
10:32  squalyl - Posté : 10-02-2010  M

(void*)&((char*)FilePtr + FileSize - 5)

non mais non là :D
qu'est ce qu'il vient foutre au milieu ce &? :D

FilePtr est déja un pointeur vers ce que tu veux, il pointe juste quelques octets avant, et il a éventuellement pas le bon type. Donc a la limite tu pourrais faire

(void*)((char*)FilePtr + FileSize - 5)

mais vu que void* et char* se comportent de la même manière, tu peux carrément virer tous les casts.

a abuser un compilo, autant le faire proprement #trifouet#

./35
18.06.2001 - 25907
10:35  Folco - Posté : 10-02-2010  M

Ah oui n'importe quoi #triso# Ca m'apprendra à faire un truc sans réfléchir, putain la honte #triso#

Don au final, FilePtr + FileSize - 5 marche très bien. #trioui# Tout ça pour essayer de faire bien à la base, n'importe quoi #mur#

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./36
16.06.2001 - 59980
10:37  squalyl - Posté : 10-02-2010  M

comme un peintre en ascii art, des petits & , * et () un peu partout et hop #hehe#

./37
18.06.2001 - 25907
10:38  Folco - Posté : 10-02-2010  M

N'est-ce pas ? Quel manque de goût ce compilo quand même :D

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./38
./39
18.06.2001 - 25907
11:03  Folco - Posté : 10-02-2010  M


avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./40
16.06.2001 - 59980
12:28  squalyl - Posté : 10-02-2010  M

je savais que ça te plairait #hehe#

./41
18.06.2001 - 25907
12:57  Folco - Posté : 10-02-2010  M

Tu m'étonnes :D

Tiens, j'm'a fait baysay :
*((char*)FilePtr + FileSize + 1)

!=
*(char*)FilePtr + FileSize + 1

%)

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./42
16.06.2001 - 59980
13:00  squalyl - Posté : 10-02-2010  M

certes %)

./43
15.06.2003 - 7597
13:02  GoldenCrystal - Posté : 10-02-2010  @_ö

C'est un peu évident quand même %)
Faut bien réfléchir à la priorité des opérateurs quand tu codes ^^
Le cast heu déréférencement c'est un "opérateur" avec une des priorités les plus élevées, donc évidemment, ça passe avant le + et beaucoup d'autres :)

avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./44
18.06.2001 - 25907
13:08  Folco - Posté : 10-02-2010  M

Oui, je m'en suis rendu compte à la relecture, donc j'ai pas galéré dessus. bizarement ça m'a sauté aux yeux, alors que j'y ai même pas pensé quand j'ai écrit...

avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./45
27.04.2006 - 37922
17:09  @Zerosquare - Posté : 10-02-2010  @_ö

squalyl (./34) :
vu que void* et char* se comportent de la même manière
Sûr ? #doute#

avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./46
16.06.2001 - 59980
17:34  squalyl - Posté : 10-02-2010  M

bah teste mais tu verrais quoi comme différence a part que tu peux pas deref un void*?

ma remarque vaut surtout que x+3 pointe 3 octets après x , que x soit un char* ou un void*.

./47
27.04.2006 - 37922
17:38  @Zerosquare - Posté : 10-02-2010  @_ö

Justement, je sais que ça semble marcher en pratique, mais je ne sais pas si c'est garanti par le standard C.

Du point de vue logique c'est un peu embêtant : si tu fais pointeur += 3, le pointeur est censé avancer de (3 * taille du type de pointeur) octets. Or void ne représente justement aucun type en particulier...

avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./48
16.06.2001 - 59980
17:40  squalyl - Posté : 10-02-2010  M

j'ai vraiment la flemme de ressortir le doc ISO C89 ou 99 (chaipa) mais il me semble qu'il mentionne que sizeof(void) = 1 quand on s'en sert comme pointeur.

en cherchant vite ça semblerait être une extension gcc... merdalors.

bon, m'en fous, j'utilise que gcc , mais c'est bon a savoir.

./49
28.10.2001 - 7411
19:25  Lionel Debroux - Posté : 10-02-2010  M

C'est une extension GCC, en effet.
L'utiliser ou pas est une question de goût - personnellement, je n'aime pas, et c'est une introduction gratuite d'importabilité bien connue entre compilos.

avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./Publicité AdSense
 « Précédent - 2/2 - » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (49r) » Déclarations et consteries

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
42ms | Statistiques