There are a few reasons why one would see this error, but the most common is in the ordering of the MFC header files. Over time, Microsoft has weeded out most of the ordering problems, but a few exceptions still exist. The one that will give you the most trouble is including
Why is that?
From a compilers perspective, the #include statements simply tell the compiler to go off and open the file stated by the preprocessor directive, plugging it into the current file prior to compiling.
ex.******** A.h ********#define WINDOWS_H#include class CObj {};******** B.h ********#ifndef WINDOWS_H#define WINDOWS_H#include #endifconst int cTest = 0;******** C.cpp ********#include