Hello,
The macro @loc reports the following error messages :
Test.asm(33): error: Invalid use of '@loc'.
Test.asm(33): error: Invalid use of '('.
Test.asm(34): error: Invalid use of '@loc'.
Test.asm(34): error: Invalid use of '('.
Test.asm(35): error: Invalid use of '@loc'.
Test.asm(35): error: Invalid use of '('.
Test code :
.386
.model flat,stdcall
option casemap:none
ExitProcess PROTO :DWORD
RECT STRUCT
left dd ?
top dd ?
right dd ?
bottom dd ?
RECT ENDS
VarSize=0
@loc MACRO _type
VarSize=VarSize + SIZEOF(_type)
EXITM <_type>
ENDM
.code
start:
call main
invoke ExitProcess,0
main PROC
LOCAL rc:@loc(RECT)
LOCAL x:@loc(DWORD)
LOCAL y:@loc(DWORD)
mov eax,VarSize
ret
main ENDP
END start
Tested with Poasm Version 13.00.49
I have a practical solution :
.386
.model flat,stdcall
option casemap:none
ExitProcess PROTO :DWORD
RECT STRUCT
left dd ?
top dd ?
right dd ?
bottom dd ?
RECT ENDS
VarSize=0
LOCV MACRO var,_type
VarSize=VarSize + SIZEOF(_type)
LOCAL var : _type
ENDM
.code
start:
call main
invoke ExitProcess,0
main PROC
LOCV rc,RECT
LOCV x,DWORD
LOCV y,DWORD
mov eax,VarSize
ret
main ENDP
END start