【问题标题】:How to define a nested struct in MASM?如何在 MASM 中定义嵌套结构?
【发布时间】:2021-12-28 19:46:51
【问题描述】:

我试图在 MASM 中定义一个嵌套结构,但错误不是很有帮助,我找不到任何参考。

一个简单的例子如下:

        .const

child   struct
value   byte   ?
child   ends

parent  struct
Id      byte   ?
Child   child  {}
parent  ends

      .data

; ok
Parent1 parent {1}

; Error A2151: Missing operator in expression
; Error A2233: Invalid data initializer: Child
Parent2 parent {1, child {1}}

我需要在Parent2的定义中修正什么?

【问题讨论】:

  • 不确定你从哪里得到{} 语法(?)。我很确定应该是<>
  • 好的,手册上说<>{} 都是有效的。所以问题似乎是您命名了第二个初始化程序。即去掉child,只写Parent2 parent {1, {1}}
  • @Michael 谢谢!如果你把它变成答案,我会接受。顺便说一句,语法来自“64位汇编的艺术”。

标签: assembly struct masm


【解决方案1】:

MASM 6.1 程序员指南列出了这些用于定义结构或联合类型变量的语法变体:

[[name]] typename < [[initializer [[,initializer]]...]] >
[[name]] typename { [[initializer [[,initializer]]...]] }
[[name]] typename constant DUP ({ [[initializer [[,initializer]]...]] })

初始化器(如果提供)应该只是类型上与类型声明中定义的字段相对应的值。

所以要定义一个Id 为1 和Child.value 为2 的变量,您可以这样写:

Parent2 parent {1, {2}}

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 2015-04-20
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多