The existing definition (in API 1.3) is a problem, when building with Visual Studio 2010, because if I include winerror.h after FileGDBAP.h I get a macro redefinition warning. In general, I should not have to worry about what order I include the headers. This is especially so when there are multiple headers. My code is not at simple as #include <winerror.h>
#include "FileGDBAPI.h"
It's actually:// in main.cpp ...
#include "FileGDBAPI.h"
#include "AddFile.h"
// in AddFile.h ...
#include "RunParameters.h"
// in RunParameters.h ...
#include "Geo.h"
// in Geo.h ...
#include <atlcomcli.h> // this includes winerror.h, which causes the warning
The solution is to #include AddFile.h before FileGDBAPI.h in main.cpp, but I shouldn't have to search through that many layers of header files (each of which has only the #inclusions it needs) to find the problem.Regardless of the complexity of my own code and file structure, I should not have to worry about the order of inclusion of your and Microsoft's header files.