C++时间结构错误

Error in C++ time structures

我正在创建一个程序来保存当天的天气信息。在 运行 代码之后,我得到 struct tm redefined 错误。我 运行 在使用 Visual C++ 2008 作为编译器的代码块中

这是我的代码:

#include<stdio.h>
#include<string.h>
#include<time.h>

struct tm  //date template
    {
        int tm_mday //day of month
        int tm_mon; //month of year
        int tm_year; //year
        //char date[11];
    };

    struct weather
    {
        struct tm *wdate1;
        int high_temp;
        int low_temp;
        int max_wind_speed;
        int preciption;
        char note[80];
    };


int main()
{
    time_t wdate;
    struct weather info[3];

    ctime(&wdate);

    printf("%s",wdate);

    return 0;
}

重新定义 struct tm - 如错误消息所述 - 正是您正在做的。 tm 结构在 time.h 中定义。您在此处的第 5-11 行再次定义了它。您应该删除此定义,或者如果您想定义一个自定义结构供您自己使用,则可以将其命名为不同的名称。

那是因为您正在重新定义一个已经在 time.h 中用相同名称 "tm" 定义的结构。如果您尝试使用相同的结构名称重新定义此模板,请不要导入

 #include <time.h>

同样在 struct tm 中,您在 tm_mday 和命令

之后缺少终止符
 printf("%s",wdate);

将导致错误,因为 wdate 不是 char *。您应该将最后两行合并为

 printf("%s",ctime(&wdate));

希望对您有所帮助!