windows.h и MFC
Почему я не могу включить windows.h в проекты afx(MFC)?
3 ответа
Как правило, код приложения MFC включает afx.h
или же afxwin.h
(последнее включает в себя первое). Первые две строчки windows.h
являются
#ifndef _WINDOWS_
#define _WINDOWS_
Который означает, что _WINDOWS_
становится определенным, если этот заголовок включен. Afx.h
включает в себя afxver_.h
и этот заголовок включает в себя afxv_w32.h
который содержит следующий код:
#ifdef _WINDOWS_
#error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
...
#include <windows.h>
Итак, если вы включите windows.h
перед заголовками MFC вы получите эту ошибку, сгенерированную во время компиляции и, как вы можете видеть, если вы включите afxwin.h
вам не нужно включать windows.h
сами - это уже будет включено afxv_w32.h
,
Потому что в MFC вы не должны использовать его напрямую. AFAIR, вы должны вместо этого включить afx.h, который, в свою очередь, косвенно включает в себя windows.h.
Вы можете включить; но вам нужно сначала включить (или подобное). Если вы получили сообщение об ошибке: «Приложения MFC не должны включать #include <Windows.h>»; это от включения чего-то вроде
afx.h
после включения
windows.h
.
Возможно, вам придется включить «Показать включает», если вы не знаете, как это было включено.