Hi Hutch,
Another method is to modify the invoke macro to check the argument count :
ExitProcess@ = 1
GetCommandLine@ = 0
GetModuleHandle@ = 1
CreateWindowEx@ = 12
DefWindowProc@ = 4
DispatchMessage@ = 1
GetMessage@ = 4
LoadCursor@ = 2
LoadIcon@ = 2
PostQuitMessage@ = 1
RegisterClassEx@ = 1
ShowWindow@ = 2
TranslateMessage@ = 1
UpdateWindow@ = 1
WndProc@ = 4
WinMain@ = 4
@ArgCount MACRO arglist:VARARG
LOCAL count
count = 0
FOR arg, <arglist>
count = count + 1
ENDM
EXITM %count
ENDM
.
.
invoke MACRO funcname:REQ,args:VARARG
LOCAL paramcount,paramcnt,p,disp,optaddr,stackbytes
.
.
p=@ArgCount(args)
temp TEXTEQU %funcname&@
IF p NE funcname&@
% echo funcname should take temp parameters.
.ERR
ENDIF