The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: Shooter on February 27, 2011, 04:14:40 PM

Title: error A2148: invalid symbol type in expression : alloc
Post by: Shooter on February 27, 2011, 04:14:40 PM
In my attempt to extract code from my primary .ASM and place it into it's own .ASM file (with "INCLUDE x.ASM" mentioned in the primary's .INC file), I'm having problems getting it to assemble. It assembled fine before I moved the code, but it was extremely messy and I wanted to try to clean it up, but scrolling up, then down, then up again, over and over, I decided to try it this way.

I've defined IPdwSize DD 0 in the .data section of the secondary .ASM file.

Something in this code is causing an error, particularly with EBX, but for the life of me, I can't figure it out...

(56) invoke GetIpAddrTable, ebx, ADDR IPdwSize, 0
(57)    .IF eax == ERROR_INSUFFICIENT_BUFFER
(58)        free ebx
(59)        mov ebx, alloc(IPdwSize)
(60)    .ENDIF
(61)    .IF ebx == 0
(62)        exit 1
(63)        jmp End_GetIPAddress
(64)    .ENDIF
.
.
.
(131)    free ebx


Quote
GetIPAddr.asm(58) : error A2008: syntax error : ebx
GetIPAddr.asm(62) : error A2008: syntax error : exit
GetIPAddr.asm(131) : error A2008: syntax error : ebx
GetIPAddr.asm(60) : error A2148: invalid symbol type in expression : alloc

Anyone got any ideas?

Thanks,
-Shooter

ref: RadASM / MASM32
Note: I did not include any files within the secondary .ASM file... should I have?
Title: Re: error A2148: invalid symbol type in expression : alloc
Post by: qWord on February 27, 2011, 04:59:49 PM
take care for the order of inclusion: macros.asm/masm32rt.inc should be included before any other includes.
Title: Re: error A2148: invalid symbol type in expression : alloc
Post by: Shooter on February 27, 2011, 05:05:35 PM
Quote from: qWord on February 27, 2011, 04:59:49 PM
take care for the order of inclusion: macros.asm/masm32rt.inc should be included before any other includes.

In my primary .INC file, I've included my new .ASM file after all of the other INCLUDEs, but before the INCLUDELIB. Is this wrong? I got the impression that the order of INCLUDEs/LIBs doesn't matter on a multi-pass setup.