Page 1 sur 1
Conversion C vers PB
Publié : mer. 26/mars/2014 16:06
par Mesa
Je bloque sur ce transtypage :
Comment traduire ça en pb ?
Code : Tout sélectionner
A.d = 10.0
B.d=15.0
flag.d=1.0
A = A + flag*(double)(int)(B /15.0+0.5)/24.0
Debug A
Debug StrD(A)
Je ne comprends pas l'ordre des parenthèses et j'hésite entre int() et round( , #PB_Round_Down)
M.
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 17:15
par Ar-S
réponse G-Rom Ci dessous
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 18:19
par G-Rom
deviens :
le (double) entre parenthèse sert uniquement pour le casting vers flag ( qui est un double )
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 19:58
par majikeyric
A ce sujet, j'ai passé ces derniers jours à étudier le code source de compilateurs C pour trouver des pistes pour créer un convertisseur C (ainsi) vers PB.
Mais ça demande un boulot énorme et je suis pas sure d'arriver au bout alors
J'ai vu sur le forum un post (de 2004)
http://www.purebasic.fr/french/viewtopic.php?f=4&t=452
d'un début de projet de convertisseur, mais la méthode laissait à désirer... et le projet s'est arrété rapidement.
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 20:11
par G-Rom
majikeyric a écrit :A ce sujet, j'ai passé ces derniers jours à étudier le code source de compilateurs C pour trouver des pistes pour créer un convertisseur C (ainsi) vers PB.
Mais ça demande un boulot énorme et je suis pas sure d'arriver au bout alors
J'ai vu sur le forum un post (de 2004)
http://www.purebasic.fr/french/viewtopic.php?f=4&t=452
d'un début de projet de convertisseur, mais la méthode laissait à désirer... et le projet s'est arrété rapidement.
C'est impossible, car PB même si il est très proche du C , reste bien différent tout de même. je prends comme exemple simple un code du genre :
Code : Tout sélectionner
struct
{
float a;
}foo;
foo A;
foo & foo_a()
{
return A;
}
foo * foo_B()
{
return &A;
}
Le retour par référence n'existe pas en PB , l'affectation de structure au moment de l'initialisation n'est pas supporté non plus , et j'en passe. Tu peu en revanches codé facilement une moulinette de header qui convertit les .h / .hpp vers du code PureBasic, à condition que le code C ne contienne pas trop de "trucs exotique"
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 20:24
par majikeyric
Je ne connais pas cette notation en C :
c'est du C++ ?
Certaines choses en C n'ont pas d'équivalent en PB. Mais j'aurais essayé de bidouiller un workaround....
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 20:35
par G-Rom
C'est du C , C'est un retour par référence.
Un peu comme ci tu faisait cela en PB ( pas possible evidement ) :
Code : Tout sélectionner
Structure maStruct
A.l
EndStructure
Global myVar.maStruct
Procedure.maStruct foo()
myVar\A = 55
procedurereturn myVar
EndProcedure
myOtherVar.maStruct = foo()
Re: Conversion C vers PB
Publié : mer. 26/mars/2014 20:57
par majikeyric
Ok, je n'ai jamais utilisé cette notation quand je faisais du C (il y a 15 ans).
Re: Conversion C vers PB
Publié : jeu. 27/mars/2014 10:10
par Mesa
INT() : C'est ce que je pensais et comme j'utilise des 'double', il faut plutôt utiliser intQ().
M.