Search code examples
c++visual-studiovisual-c++compiler-errorsvisual-c++-2010-express

Visual C++ Express 2010 suddenly won't accept #includes


I'm working with an API which has #defineed all their include files. I'm developing in Visual C++ 2010 Express, and it's been working fine up till now.

I was adding a new cpp-file to the project, and accidentally added a "Windows Form" instead. VC warned me that my project was not using CLR at the moment, did I really want to? I clicked no, and added the file as intended. After that, however, my project no longer compiles.

The code looks basically like this:

api_header.h:

#define DEFINED_HEADER_NAME "path/to/header/file.h"

stdhpf.h:

#include DEFINED_HEADER_NAME

As I said, worked fine for a long time. Now I get this:

error C2006: '#include' : expected a filename, found 'identifier'
fatal error C1083: Cannot open include file: '': No such file or directory

What is causing this? I found some post that said it was because of having turned on precompiled headers, but I checked Project properties > Configuration properties > C/C++ / Precompiled headers, and it's off (I mention the setting path since I'm new to VS, there might be more than one way to do it...).

Any ideas?


Solution

  • The problem almost certainly lies in the order in which the two statements are pre-processed, rather than having anything to do with inadvertently adding a Windows Form object.

    This knowledge base article suggests:

    The problem is in using a defined constant to specify an include file in the #include directive. The directive is being processed before the macro is completely expanded, resulting in the error.

    The second error seems to confirm this, as it indicates the pre-processor is searching for an include file with an empty name:

    fatal error C1083: Cannot open include file: '': No such file or directory