Странное поведение MASM'а

Тема в разделе "WASM.ASSEMBLER", создана пользователем frizzn, 5 ноя 2004.

  1. frizzn

    frizzn New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2004
    Сообщения:
    1
    Столкнулся с такой штукой. Есть вот такая тупая программа
    Код (Text):
    1.  
    2. .386
    3. .model flat, stdcall
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\user32.inc
    8.  
    9. includelib \masm32\lib\kernel32.lib
    10. includelib \masm32\lib\user32.lib
    11.  
    12. .data
    13.  
    14. MessageBoxCaption    db "Caption",0
    15. MessageBoxText        db "Some text",0
    16.  
    17. .code
    18. start:
    19.         invoke MessageBox , NULL, addr MessageBoxText, addr MessageBoxCaption, MB_OK
    20.         invoke ExitProcess, 0
    21. end start
    22.  




    Если ее компилить так:
    Код (Text):
    1. ml /c /coff msgbox.asm


    то все нормально, а если так:
    Код (Text):
    1. ml /c /coff "msgbox.asm"


    то в obj-файле, помимо _MessageBoxA@16 и _ExitProcess@4, появляется ссылка на _wsprintfA. В чем тут прикол?
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Кавычки здесь не при чем. А wsprintfA попадает (в любом случае) в объектник, потому что в windows.inc есть такое:



    wsprintfA PROTO C :lol: WORD,:VARARG

    wsprintf equ <wsprintfA>