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.

Возможно, вам придется включить «Показать включает», если вы не знаете, как это было включено.

Другие вопросы по тегам