Ошибка во время компиляции исходного кода на C

Мне нужна помощь в определении ошибки в моей программе, написанной мной на C. Пожалуйста, имейте в виду, что я все еще изучаю C. Я пытаюсь реализовать то, чему научился далеко. Моя IDE - это MS visual studio 2010.

Вот программа, описание программы написано как комментарий:

/*The distance between two cities (in km) is input through the keyboard. 
Write a program to convert and print this distance in meters, feet, inches and centimeters*/
#include<stdio.h>
#include<conio.h>
//I have used #include<stdio.h> and #include<conio.h> above
int main()
{
float km, m, cm, ft, inch ;
clrscr();
printf("\nEnter the distance in Kilometers:");
scanf("%f", &km );
// conversions
m=km*1000;
cm=m*100;
inch=cm/2.54;
ft=inch/12;
// displaying the results
printf("\nDistance in meters =%f", m);
printf("\nDistance in centimeters =%f", cm);
printf("\nDistance in feet =%f", ft);
printf("\nDistance in inches = %f", inch);
printf("\n\n\n\n\n\n\nPress any key to exit the program.");
getchar();
return 0;
}
Errors:
1>e:\my documents\visual studio 2010\projects\distance.cpp(32): error C2857: '#include' statement specified with the /YcStdAfx.h command-line option was not found in the source file
</conio.h></stdio.h></conio.h></stdio.h>
3 ответа

ошибка C2857: оператор #include, указанный в параметре командной строки /YcStdAfx.h, не найден в исходном

Это означает, что компилятор (VisualStudio 2010) заставляет включить StdAfx.h, но в том источнике, в который вы его не включаете.

Попробуйте добавить:

#include

в верхней части исходного файла.


SanSS уже объяснила сообщение об ошибке. Позвольте мне вкратце объяснить предупреждения. Первое предупреждение о scanf можно игнорировать на этом этапе. Проблема с scanf в том, что она небезопасна, если вы пытаетесь прочитать строку в предварительно выделенной C-строке (например, в массиве char или char). Вы читаете в float, который всегда имеет фиксированный размер (обычно четыре байта). Поэтому переполнение не может произойти здесь.

Второе предупреждение относится к выражению inch=cm/2.54. Литерал 2.54 рассматривается как значение двойной точности. Таким образом, cm/2.54 также будет иметь двойное значение - результат такого вычислительного выражения всегда будет повышаться. Хотя cm имеет тип float (одинарная точность), результат будет ******. Однако inch имеет тип float, поэтому присваивание = будет неявным образом опустошать результат от ****** до float. Поскольку переменная a float имеет меньшую точность, результат становится менее точным. Чтобы избежать этого предупреждения, измените числовой литерал, чтобы выражение выглядело так: inch = cm / 2.54f. Это говорит компилятору, что 2.54 следует рассматривать как литерал с единственной точностью float.


к предупреждению C4996 по сравнению с 2010 годом, особенно по сравнению с 2012 годом. вы должны поместить следующий код в верхнюю часть файла

#define _CRT_SECURE_NO_WARNINGS

И установите опцию предварительно скомпилированного заголовка на "не использовать" на странице свойств проекта.

licensed under cc by-sa 3.0 with attribution.