结构的第一个成员在VS调试器中不可见

问题描述 投票:0回答:1

我是汇编语言的新宠。当我学习编写结构时,发生了奇怪的事情。

这是我定义的结构

User struct 
    name byte 20 dup(0)
    password byte 10 dup(0)
    more byte "bbbbbbbbbbbbbbbbbbbbbbbbbbbb"
User ends

这就是我声明变量的方式

user1 User <"chi","fan">

但是当我在Visual Studio 2019中检查变量user1时,我看不到结构名称的第一个成员

关闭检查窗口:close inspect window

内存窗口:memory window

我的data.asm完整代码

Employee struct
    IdNum byte "000000000"              ; 9
    LastName byte 30 DUP(0)             ; 30
    ALIGN word                          ; 
    Years word 0                        ; 2
    ALIGN dword                         ; 
    SalaryHistory dword 0,0,0,0         ; 16
Employee ends     


Employee2 struct
    IdNum byte "000000000"              ; 9
    LastName byte 30 DUP(0)             ; 30
    ALIGN word                          ; 
    Years word 0                        ; 2
    ALIGN dword                         ; 
    SalaryHistory dword 0,0,0,0         ; 16
Employee2 ends    


User struct 
    name byte 20 dup(0)
    password byte 10 dup(0)
    more byte "bbbbbbbbbbbbbbbbbbbbbbbbbbbb"
User ends

user1 User <"chi","fan">
worker4 Employee <"888","555">
worker2 Employee2 <"aaa","bbb">

我在main.asm中的完整代码

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

.data
    include data.asm
.code
main PROC
  mov worker4.SalaryHistory, 1000H        ;
                                          ; 

  invoke ExitProcess,0
main ENDP
END main

环境:Windows,Visual Studio 2019

visual-studio debugging assembly masm visual-studio-debugging
1个回答
0
投票

NAME是MASM中的reserved word。 MASM在User结构中使用它作为成员名称似乎没有问题,但是Visual Studio调试器似乎对此感到困惑。

修复:

  • name成员重命名为uname
  • 使用NOKEYWORD选项告诉MASM您想覆盖NOKEYWORD作为保留字。将此添加到name(或data.asm)的顶部

    OPTION NOKEYWORD:

这告诉MASM不要将main.asm视为保留字。

© www.soinside.com 2019 - 2024. All rights reserved.