#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:
Отключите предварительно скомпилированные заголовки. Это должно помочь.