windows.h и MFC - PullRequest
       28

windows.h и MFC

7 голосов
/ 17 февраля 2011

Почему я не могу включить windows.h в проекты afx (MFC)?

Ответы [ 2 ]

11 голосов
/ 17 февраля 2011

Как правило, код приложения 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.

2 голосов
/ 17 февраля 2011

Потому что в MFC вы не должны использовать его напрямую.AFAIR, вы должны вместо этого включить afx.h, который, в свою очередь, косвенно включает в себя windows.h.

...