Поскольку 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, которая могла вызвать это, но я Я не уверен, что это происходит в последних версиях. Я очень переживал из-за этого давным-давно, и был гораздо более осторожен с тем, какие переменные я позволил отдельным компиляторам устанавливать в глобальной среде с тех пор.