Conversion C vers PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Conversion C vers PB

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Conversion C vers PB

Message par Ar-S »

réponse G-Rom Ci dessous
Dernière modification par Ar-S le mer. 26/mars/2014 22:10, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Conversion C vers PB

Message par G-Rom »

Code : Tout sélectionner

A =  A +  flag*(double)(int)(B /15.0+0.5)/24.0
deviens :

Code : Tout sélectionner

A =  A +  flag *  int(B /15.0+0.5) / 24.0

le (double) entre parenthèse sert uniquement pour le casting vers flag ( qui est un double )
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Conversion C vers PB

Message 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 :lol:

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.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Conversion C vers PB

Message 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 :lol:

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"
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Conversion C vers PB

Message par majikeyric »

Je ne connais pas cette notation en C :

Code : Tout sélectionner

foo & foo_a()
{
   return A;
}
c'est du C++ ?

Certaines choses en C n'ont pas d'équivalent en PB. Mais j'aurais essayé de bidouiller un workaround....
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Conversion C vers PB

Message 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()
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Conversion C vers PB

Message par majikeyric »

Ok, je n'ai jamais utilisé cette notation quand je faisais du C (il y a 15 ans).
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Conversion C vers PB

Message par Mesa »

INT() : C'est ce que je pensais et comme j'utilise des 'double', il faut plutôt utiliser intQ().

M.
Répondre