#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.