Здравствуйте, EreTIk, Вы писали:
ETI>>>Думаю, что дело в версии и/или настройках компилятора. Пример:
ETI>>>ETI>>>void (*g_pFunc)() = nullptr;
ETI>>>extern "C"
ETI>>>__declspec(dllexport)
ETI>>>void f()
ETI>>>{
ETI>>> g_pFunc();
ETI>>>}
ETI>>>
ETI>>>>>>>cl /O2 /Zi /MTd /EHsc test.cpp /link /RELEASE /OPT:REF
ETI>>>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
ETI>>>Copyright (C) Microsoft Corporation. All rights reserved.
ETI>>>test.cpp
ETI>>>Microsoft (R) Incremental Linker Version 9.00.30729.4999
ETI>>>Copyright (C) Microsoft Corporation. All rights reserved.
ETI>>>/out:test.exe
ETI>>>/debug
ETI>>>/RELEASE
ETI>>>/OPT:REF
ETI>>>test.obj
ETI>>> Creating library test.lib and object test.exp
ETI>>>
ETI>>>ETI>>>f: FF25C03F4200 jmp d,[000423FC0]
ETI>>>.00401006: CCCCCCCCCCCCCCCCCCCC int 3
ETI>>>
TSS>>Это безусловно зависит от компилятора, но все таки мы говорим про windows, а она использует микрософтовский компилятор. Соответственно, с прологом там все более менее понятно. Хотя признаться, я не знаю как с этим дела в последних версиях компиляторов.
ETI>Так мой пример тоже построен на кодо-генерации MS'овских компилятора и линкера (не самых свежих — Microsoft Visual Studio 9.0).
ETI>Мой посыл был в том, что старый компилятор, которым собирали XP, мог оставлять пролог из-за недоработки или специфических опций.
Упс, совсем я плохой стал, мне почему-то почудился gcc. Тогда да, видимо дело в компиляторе (версии или настройках).