Visual C ++ Express 2010 неожиданно не примет #includes - PullRequest
5 голосов
/ 20 мая 2011

Я работаю с API, который #define редактировал все свои включаемые файлы.Я занимаюсь разработкой в ​​Visual C ++ 2010 Express, и до сих пор она работала нормально.

Я добавлял новый cpp-файл в проект и случайно добавил вместо этого «Windows Form».VC предупредил меня, что мой проект в настоящее время не использует CLR, я действительно хотел?Я нажал нет, и добавил файл, как задумано.Однако после этого мой проект больше не компилируется.

Код выглядит в основном так:

api_header.h :

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

stdhpf.h :

#include DEFINED_HEADER_NAME

Как я уже говорил, долго работал нормально.Теперь я получаю это:

ошибка C2006: '#include': ожидаемое имя файла, найдено 'identifier'
фатальная ошибка C1083: Невозможно открыть включаемый файл: '': Нет такого файла или каталога

Что вызывает это?Я нашел сообщение, в котором говорилось, что это связано с включением предварительно скомпилированных заголовков, но я проверил Project properties > Configuration properties > C/C++ / Precompiled headers, и он выключен (я упоминаю путь установки, так как я новичок в VS, возможно, есть несколько способов сделать это...).

Есть идеи?

Ответы [ 3 ]

7 голосов
/ 20 мая 2011

Проблема почти наверняка заключается в том, что два оператора предварительно обрабатываются, а не связаны с непреднамеренным добавлением объекта Windows Form.

Эта статья базы знаний предлагает:

Проблема заключается в использовании определенной константы для указания включаемого файла в директиве #include.Директива обрабатывается до полного раскрытия макроса, что приводит к ошибке.

Вторая ошибка, кажется, подтверждает это, поскольку указывает на то, что препроцессор ищет включаемый файл с пустымимя:

fatal error C1083: Cannot open include file: '': No such file or directory
0 голосов
/ 29 июня 2015

Отключить предварительно скомпилированные заголовки. Это должно помочь.

0 голосов
/ 20 мая 2011

Порядок ваших включаемых файлов изменился.Возможно, Visual Studio вставил #include "stdhpf.h" где-то впереди вашего #include "api_header.h".

...