首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误:';‘标记前应为构造函数、析构函数或类型转换?

错误:';‘标记前应为构造函数、析构函数或类型转换?
EN

Stack Overflow用户
提问于 2009-10-15 15:36:54
回答 4查看 97.9K关注 0票数 19

我试图编译我的代码来测试一个读取和打印数据文件的函数,但是我得到了一个我不理解的编译错误-“错误:预期的构造函数,析构函数,或';‘标记前的类型转换”。相关代码的墙-文本在下面。

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-15 15:41:15

包含错误的代码行看起来像是在尝试调用GetMonth --但是在全局级别,C++程序由一系列声明组成。由于函数调用不是声明,因此它不能在全局级别上孤立存在。你可以有一个同时也是一个定义的声明,在这种情况下它可以调用一个函数作为初始化的一部分。

然而,函数调用本身必须包含在其他函数中:

代码语言:javascript
复制
#ifdef TEST
int main() { 
    GetMonth();
}
#endif
票数 29
EN

Stack Overflow用户

发布于 2009-10-15 16:03:16

(除了其他回复。)为了执行您的“GetMonth()”函数,您必须从另一个函数(“main”或任何从“main”调用的函数)调用它,或者在名称空间范围内声明的对象的初始化器表达式中使用它,如

代码语言:javascript
复制
double global_dummy = GetMonth();

但是,后一种方法可能会遇到初始化顺序问题,这就是为什么建议尽可能使用前一种方法。

票数 19
EN

Stack Overflow用户

发布于 2009-10-15 15:41:35

在C/C++中,您不能简单地将可执行代码添加到标头或实现(.c、.cpp、.cxx等)的主体中。文件。相反,您必须将其添加到函数中。如果希望在启动时运行代码,请确保将其添加到main方法中。

代码语言:javascript
复制
int main(int argc, char *argv[]) {
  GetMonth();
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1573168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档