1

Bonjour.
bjet@@YGXPAUOBJET@@HHNNHH@Z" (ByRef Obj As Objet, ByVal x As Long, ByVal y As Long, ByVal zoom As Double, ByVal angle_degrés As Double, Optional ByVal effet As Long, Optional ByVal alpha As Long) As Long
Hier, je me suis mis à l'adaptation de ma librairie pour VB -> en C. En VB, j'avais fait une DLL écrite en C et l'API en VB. Et ce qu'il y a de bien pratique, c'est les arguments optionnels, par exemple:Public Declare Function RotationObjet Lib "vbDLL.dll" _
Alias "?RotationO
Vous voyez, les deux derniers arguments sont facultatifs (cette fonction étant déjà un monstre en elle-même). Si je prends une fonction plus simple (FxCadre qui dessine un rectangle plein), je peux l'écrire ainsi:
FxCadre 0,0,300,300,RGB(255,0,0)
Et ça me dessinera un grand cadre rouge. Là pas de problème, et si je veux utiliser un effet:
FxCadre 0,0,300,300,RGB(255,0,0),fxAddition
Avec un argument supplémentaire encore pour l'alpha-blend:
FxCadre 0,0,300,300,RGB(255,0,0),fxTransparence,128
Malheureusement en C, je suis obligé d'écrire une horreur même si je ne veux pas utiliser d'effet (voici l'équivalent de la première ligne):
FxCadre (0,0,300,300,RGB(255,0,0),FX_OPAQUE,0);
J'ai essayé avec les ... et les va_list, mais ce n'est pas adapté (on ne peut apparemment pas savoir s'il n'y a plus d'argument). La question, y'a-t-il un moyen en C de faire des arguments optionnels, qui prendront éventuellement la valeur nulle s'ils ne sont pas passés?
Merci d'avance.
[Edit] Pas bô le format...
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2

Fais le en C++ smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Je ne connais pas le C++, mais si le fait d'ajouter l'extension .cpp au fichier suffit, alors je le ferai. smile
Cela dit, je n'ai pas trouvé non plus comment le faire en C++ (et c'est compliqué de s'y retrouver dans MSDN, tu lis la moitié de l'article et tu te rends compte qu'il parlait en fait de VB ou de Java...) neutral
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4

En C++, tu peux spécifier que tes fonctions prennent des valeurs par défaut ou qu'elles prennent différents arguments :
void f(int a); // Fonction 1
void f(int a,int b); // Fonction 2
void f(int a,int b,int c,int d=5); // Fonction 3

Si tu écris ensuite :
f(5); // Appel de Fonction 1
f(5,6); // Appel de Fonction 2
f(5,6,7,8); // Appel de Fonction 3
f(5,6,7); // Appel de Fonction 3, d=5
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

Méga smile
Dire que j'ai cherché tout ce temps et je ne suis pas tombé à quelque chose qui y ressemble. Génial, merci beaucoup. C'est bien quelque chose qui manque au C sad
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741