Ответ 1
Строка с ошибкой выглядит так, как будто вы пытаетесь вызвать GetMonth, но вы можете сделать это только внутри функции:
#ifdef TEST
int main() {
GetMonth();
return 0;
}
#endif
Я пытаюсь скомпилировать свой код для проверки функции для чтения и печати файла данных, но я получаю компиляционную ошибку, которую я не понимаю - "ошибка: ожидаемый конструктор, деструктор или преобразование типов до"; ' лексема". Стена соответствующего кодового текста приведена ниже.
struct Day
{
int DayNum;
int TempMax;
int TempMin;
double Precip;
int TempRange;
};
struct Month
{
Day Days[31];
int MonthMaxTemp;
int MonthMinTemp;
double TotalPrecip;
int MonthMaxTempRange;
int MonthMinTempRange;
double AverageMaxTemp;
double AverageMinTemp;
int RainyDays;
double AveragePrecip;
}theMonth;
double GetMonth();
double GetMonth()
{
for (int Today = 1; Today < 31; Today++)
{
cout << theMonth.Days[Today].TempMax << theMonth.Days[Today].TempMin;
cout << theMonth.Days[Today].Precip;
}
return 0;
}
GetMonth(); // compile error reported here
Строка с ошибкой выглядит так, как будто вы пытаетесь вызвать GetMonth, но вы можете сделать это только внутри функции:
#ifdef TEST
int main() {
GetMonth();
return 0;
}
#endif
(В дополнение к другим ответам.) Чтобы исправить вашу функцию "GetMonth()", вам нужно либо вызвать ее из другой функции ( "main", либо как угодно из "main" ) или использовать ее в выражении инициализации объекта, объявленного в области пространства имен, как в
double global_dummy = GetMonth();
Однако последний способ может пострадать от проблем с порядком инициализации, поэтому рекомендуется по возможности использовать прежний метод.
В C/С++ вы не можете просто добавить исполняемый код в тело файла заголовка или реализации (.c,.cpp,.cxx и т.д.). Вместо этого вы должны добавить его в функцию. Если вы хотите, чтобы код запускался при запуске, обязательно добавьте его к основному методу.
int main(int argc, char *argv[]) {
GetMonth();
}
Программы С++ не выполняются в глобальном контексте. Это означает, что вам нужно поместить вызов GetMonth в функцию для его запуска. int main() { }
может быть уместным.