Je veux assigner une procédure de fenêtre à une structure de classe de fenêtre:Affectation d'un pointeur de fonction avec un prototype déclaré avant en Nim
var wndClass : WNDCLASS;
wndClass.lpszClassName = CLASSNAME;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
Je ne peux pas céder encore WndProc parce qu'il n'a pas été déclaré. Lorsque j'utilise une déclaration avant (décrite here):
proc WndProc(hWnd: HWND; msg: WINUINT; wParam: WPARAM; lParam: LPARAM) : LRESULT
Je reçois cette erreur:
est ma déclaration avant de mal, ou dois-je écrire d'abord la fonction dans ce cas?
Edit:
Pour référence, le code suivant fonctionne dans le contexte global:
proc Foo : int32;
var bar = Foo();
var baz = Foo;
echo bar;
echo baz();
proc Foo : int32 =
return 4;
Les définitions des WNDCLASS et WNDPROC se trouve ici: http://nim-lang.org/windows.html
Spéculation pure: Essayez-vous d'utiliser 'WndProc' dans la portée globale de niveau supérieur ou dans une autre fonction? Ma conjecture serait que la déclaration forward ne fonctionne qu'entre les fonctions, c'est-à-dire que la fonction 'A' peut accéder à' B' et vice versa si vous transférez l'une d'entre elles. Cela aurait du sens pour moi si l'attribution d'une fonction à une portée de niveau supérieur nécessite une définition complète. – bluenote10
@ bluenote10: Voir mon edit – ilitirit
Je voudrais vraiment vous aider, mais je ne pouvais tout simplement pas reproduire votre problème. Il serait utile d'avoir un exemple complet, y compris les définitions de 'WNDCLASS' et' WNDPROC'. Ou encore mieux: pouvez-vous trouver un exemple minimal, multi-plateforme, qui montre votre problème? – bluenote10