Visual C Express 2010 внезапно не принимает #includes

#c #visual-studio #visual-c #compiler-errors #visual-c -2010-express

#c #visual-studio #visual-c #ошибки компилятора #visual-c -2010-express

Вопрос:

Я работаю с 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, может быть более одного способа сделать это …).

Есть идеи?

Ответ №1:

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

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

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

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

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

Ответ №2:

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

Ответ №3:

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