Ошибка при многократной инициалицации вложенной структуры

Тема в разделе "WASM.ASSEMBLER", создана пользователем Al Shark, 14 мар 2017.

  1. Al Shark

    Al Shark New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    13
    Адрес:
    Moscow
    Ловлю ошибку при многократной инициалицации вложенной структуры.

    Это описание структур:
    Код (ASM):
    1. ;-------------- a_record --------------------------------
    2. a_record    struct
    3. a_n     db  ?
    4. a_v     db  ?
    5. a_p     db  ?
    6. a_i     db  ?
    7. a_record    ends
    8. ;-------------- b_record --------------------------------
    9. b_record    struct
    10. b_b     dd      8 dup(?)
    11. b_s     a_record    32*8 dup(<>)
    12. b_record    ends
    А вот тут ошибка:
    Код (ASM):
    1.     b_record    32 dup(<>)  ;error A2177: nested structure improperly initialized
    Пробовал использовать union в «b_record», но всё равно та-же ошибка.

    Неужели я что-то очивидное упустил?
     
  2. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Все правильно, b_record ты уже описал как структуру и тут же пытаешься ее сделать переменной, надо так:
    peremennaya b_record 32 dup (<>)
    или
    peremennaya db 32*sizeof b_record
     
    rococo795 нравится это.
  3. Al Shark

    Al Shark New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    13
    Адрес:
    Moscow
    Оба варианта:
    Код (ASM):
    1. peremennaya b_record 32 dup (<>)
    Код (ASM):
    1. peremennaya  db 32*sizeof b_record
    Не работают (ml.exe 8.0.50727.762)

    Нашел идентичный вопрос на форуме масма:
    http://masm32.com/board/index.php?PHPSESSID=43c7a47a7d9b8d8274e1c1f09746ac94&topic=4167.0

    Так там решением стало ещё одно вложение:
    Код (ASM):
    1. b_p struct
    2.    b_record 32 dup(<>)
    3. b_p ends
    4.  
    5. ;...
    6.  
    7. b_p <>
    Похоже это ошибка обработки «dup» самим компилятором.
     
  4. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Я использую ml 6.14.8444, первый вариант компилируется без проблем, во втором я сделал ошибку, правильно так:
    peremennaya db (32*sizeof b_record) dup (?)