Strona główna C++ C++ Hardware HTML i javascript Java Software SQL flag_united_kingdom flag_poland

C++ - error C4430: missing type specifier - int assumed. Przyczyna problemu. (VS 2010)

Dodano: 2011-12-08

Jeżeli wystąpi w trakcie kompilowania programu następujący błąd:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Najpierw należy ustalić jakiej linii kodu dotyczy zwracany komunikat. W Visual Studio klikając dwukrotnie na błąd zostaniemy automatycznie przeniesieni do linii kodu gdzie jest problem z kodowaniem.

Pierwszym podejrzeniem błędu jak sama nazwa wskazuje jest brak zwracanego typu przez funkcję (może nie wprost :), której deklaracja to wymusza. Przykład błędnej implementacji poniżej:

int addX(int i); // w pliku nagłówkowym

addX(int i){
	// ...
	return i + x;
}

po próbie kompilacji, otrzymasz powyższy błąd, prawidłowa implementacja powinna wyglądać tak:

int addX(int i){
	// ...
	return i + x;
}

Jeżeli deklaracja funkcji w pliku nagłówkowym, jest taka sama jak nazwa funkcji wraz z definicją w pliku źródłowym (obydwa zwracają takie same typy), to błąd ten, może też być spowodowany brakiem dodania odpowiedniej biblioteki. Należy wtedy sprawdzić czy nie korzysta się z typów, które nie są domyślnymi zmiennymi środowiskowymi, wtedy będzie dodatkowy błąd dotyczący tej linii error C2143: syntax error : missing ',' before '*'. Przykładowo nagłówek:

int addText(TCHAR* ttext);

Jest poprawnie zdefiniowany, jednak bez dodania biblioteki windows.h, otrzymamy komunikat, którego dotyczy ten artykuł, ponieważ nie będzie rozpoznany typ danych TCHAR.