#c #gcc #mingw #winmain
Вопрос:
#include <stdio.h>
#include <windows.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
return(0);
}
Я новичок в Си. Приведенный выше код возвращает следующую ошибку при попытке компиляции:
main.c:3:5: error: conflicting types for 'WinMain'
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
^~~~~~~
In file included from c:mingwincludewindows.h:44:0,
from main.c:2:
c:mingwincludewinbase.h:1263:14: note: previous declaration of 'WinMain' was here
int APIENTRY WinMain (HINSTANCE, HINSTANCE, LPSTR, int);
Комментарии:
1. куда вы помещаете код выше? это выше главного?
2. У меня нет главного. Нужен ли он мне? Приведенный выше код-это весь код моего проекта. @Асафитач
3. По-прежнему возникает та же ошибка.
4. windws.h-это файл заголовка, который позволяет вам компилировать программу для Windows, согласно википедии, он автоматически включает windef.h, который определяет ПОМЕХИ. Включение windef.h вручную не устраняет ошибку.
Ответ №1:
Вы должны привести определение функции в соответствие с объявлением библиотеки. У тебя есть
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
и это должно быть
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Этого не хватает APIENTRY
.