2.gif
@_ö
(07:31)  Bienvenue ! - Inscrivez vous pour poster ! -
Boo, roots_genoa, dc103chaos, manoloben, 34 inconnu(s), 19 bot(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
./30 - REPRISE AUTOMATIQUE DU MESSAGE PRECEDENT
10.06.2001 - 34483
04:23  Kevin Kofler - Posté : 10-02-2010  Infos 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
./31
16.06.2001 - 59171
08:44  squalyl - Posté : 10-02-2010  Infos M
pareil grin

ça raye les yeux ce cast grin


pourquoi pas FilePtr + FileSize - 5?

d'ailleurs ça va foirer pour autre chose que du x86
./32
18.06.2001 - 28785
10:20  Folco - Posté : 10-02-2010  Infos 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é grin). 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©®™ >>>
Saint Qt, priez pour nous.
./33
15.06.2003 - 7804
10:22  GoldenCrystal - Posté : 10-02-2010  Infos @_ö
Normalement y'a pas besoin de cast en void*.
Et tu peux pas obtenir un pointeur sur une valeur tongue
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
./34
18.06.2001 - 28785
10:29  Folco - Posté : 10-02-2010  Infos 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©®™ >>>
Saint Qt, priez pour nous.
./35
16.06.2001 - 59171
10:32  squalyl - Posté : 10-02-2010  Infos M
(void*)&((char*)FilePtr + FileSize - 5)

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

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#
./36
18.06.2001 - 28785
10:35  Folco - Posté : 10-02-2010  Infos 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©®™ >>>
Saint Qt, priez pour nous.
./37
16.06.2001 - 59171
10:37  squalyl - Posté : 10-02-2010  Infos M
comme un peintre en ascii art, des petits & , * et () un peu partout et hop #hehe#
./38
18.06.2001 - 28785
10:38  Folco - Posté : 10-02-2010  Infos M
N'est-ce pas ? Quel manque de goût ce compilo quand même grin
avatar<<< Kernel Extremist©®™ >>>
Saint Qt, priez pour nous.
./39
./40
18.06.2001 - 28785
11:03  Folco - Posté : 10-02-2010  Infos M
avatar<<< Kernel Extremist©®™ >>>
Saint Qt, priez pour nous.
./41
16.06.2001 - 59171
12:28  squalyl - Posté : 10-02-2010  Infos M
je savais que ça te plairait #hehe#
./42
18.06.2001 - 28785
12:57  Folco - Posté : 10-02-2010  Infos M
Tu m'étonnes grin

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

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

cheeky
avatar<<< Kernel Extremist©®™ >>>
Saint Qt, priez pour nous.
./43
16.06.2001 - 59171
13:00  squalyl - Posté : 10-02-2010  Infos M
certes cheeky
./44
15.06.2003 - 7804
13:02  GoldenCrystal - Posté : 10-02-2010  Infos @_ö
C'est un peu évident quand même cheeky
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 smile
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
./45
18.06.2001 - 28785
13:08  Folco - Posté : 10-02-2010  Infos 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©®™ >>>
Saint Qt, priez pour nous.
./46
27.04.2006 - 42279
17:09  @Zerosquare - Posté : 10-02-2010  Infos @_ö
squalyl (./35) :
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
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
./47
16.06.2001 - 59171
17:34  squalyl - Posté : 10-02-2010  Infos 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*.
./48
27.04.2006 - 42279
17:38  @Zerosquare - Posté : 10-02-2010  Infos @_ö
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
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
./49
16.06.2001 - 59171
17:40  squalyl - Posté : 10-02-2010  Infos 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.
./50
28.10.2001 - 7562
19:25  Lionel Debroux - Posté : 10-02-2010  Infos 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
   
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
113ms | Statistiques