Поскольку VS любит использовать предварительно скомпилированные заголовки, вам может потребоваться убедиться, что вы не нарушили какие-либо предположения. Один из источников проблемы - назвать любой заголовок вообще впереди линии, которая включает stdafx.h
.
Даже без проблем с предварительно скомпилированными заголовками вы можете непреднамеренно определить что-то, что плохо связано с определениями в заголовках запаса. Если вы заглянете внутрь stdio.h, вы увидите, что он имеет ряд интересных условных разделов компиляции, так как тот же файл распространяется на несколько различных платформ. Обязательно посмотрите настройки вашего проекта, и если проблема возникает только при компиляции определенного исходного файла, то и в настройках компиляции этого файла.
Это, безусловно, стоит начать новый проект и проверить, если хороший ол»hello.c может быть собран ...
#include <stdio.h>
int main(int argc, char **argv) {
printf("hello, world.\n");
return 0;
}
, если нет, то есть что-то серьезно не так с установкой VS.
Еще один возможный, но маловероятный источник проблем будет, если у вас установлены другие компиляторы, и каким-то образом случайно получил VS, используя еще один stdio.h
... Неправильная переменная среды INCLUDE, используемая, чтобы иметь возможность вызвать это, m не уверен, что это происходит в последних версиях. Я был сожжен этим давно, и был гораздо более осторожен в отношении того, какие переменные я позволяю отдельным компиляторам устанавливать в глобальной среде с тех пор.
Вы можете написать сообщение об ошибке и пример минимального кода, который воспроизводит его? Мое предположение было бы в том, что некоторые из препроцессоров определяют неправильные/дублированные/не заданные, но без каких-либо действий для этого просто предположение. –
Да, но Visual Studio имеет набор параметров проекта, которые включают в себя параметры препроцессора, а также некоторые параметры для каждого файла. –
опубликуйте содержимое файла, содержащего stdio.h (или урезанный пример, который имеет ту же проблему) – jalf