Анатомия C Run-Time, или Как сделать программу немного меньшего размера - main или WinMain?
ОГЛАВЛЕНИЕ
Страница 2 из 15
main или WinMain?
Среди начинающих программистов можно услышать такое мнение: для консольной программы используется только функция main, а для оконной - WinMain. Это мнение, хотя и подтвержденное умолчаниями компилятора и линкера, в общем случае, является ошибочным.
Чтобы немного развлечься, проведем эксперимент. Создадим файл test.cpp:
#include <windows.h>
int main()
{
MessageBox(0, "Hello from main()", "A test program", MB_OK);
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{
MessageBox(0, "Hello from WinMain()", "A test program", MB_OK);
return 0;
}
Внимание, вопрос: что появится на экране после запуска такой программы? Постарайтесь ответить на этот вопрос, не заглядывая в дальнейшее описание.
ПРИМЕЧАНИЕ Я не стал рассматривать еще два возможных варианта стартовой функции: wmain или wWinMain, предназначенных для проектов, компилируемых в Unicode. Кроме того, при создании DLL имеется еще один вариант стартовой функции - DllMain.