ошибка C4430: отсутствует спецификатор типа — предполагается int?

#windows #visual-c #visual-studio-2012 #mfc

#Windows #visual-c #visual-studio-2012 #mfc

Вопрос:

Я написал метод обратного вызова, и когда я пытаюсь скомпилировать проект в vs2012, я получаю следующую ошибку:

  error C4430: missing type specifier - int assumed. Note: C   does not support default-int
 error C2143: syntax error : missing ',' before 'amp;'
 

обе ошибки присутствуют в одной строке.

Это следующий код, который я пытаюсь:

 #include <windows.h>
#include "atlstr.h"

///////////////////////////////////////////////////////////////////////////////
class CInf;
typedef BOOL (*PENUMDEVCALLBACK)(CInf* inf, const CStringamp; devname, const CStringamp; instsecname, const CStringArrayamp; devid, PVOID context, DWORDamp; code);
 

Я думаю, что ошибка будет присутствовать в CStringArrayamp; аргументе, потому что, когда я включаю afxcoll.h .

the fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>.

Когда я удалил windows.h. вышеуказанная ошибка исчезла, но мне также нужен заголовок windows.h.

Есть идеи, как включить windows.h и afxcoll.h в тот же файл.

Комментарии:

1. Я полагаю, что вы должны включить afx.h и затем afxcoll.h . Первое (косвенно) включает windows.h

Ответ №1:

Невозможно включить только отдельные части MFC. Если вы хотите использовать CStringArray, вам необходимо включить файл afx.h или afxwin.h.

Можно использовать только CString . Если вам просто нужен массив CString и вам не нужен полный MFC, проще использовать std::vector . CString отлично работает со всеми контейнерами STL.