Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 576
carlpett Avatar asked May 20 '11 15:05

carlpett


1 Answers

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
like image 168
Cody Gray Avatar answered Oct 20 '22 12:10

Cody Gray