编译时Time_t声明问题

time_t declaration issue during compile time

本文关键字:声明 问题 Time 编译      更新时间:2023-10-16

我有一个time_t和Struct tm正在我的代码中使用。我不能像现在这样初始化结构体。如果它在函数中初始化,那么它就可以正常工作。请帮助

#include "time.h"
static struct tm strtime;
struct tm * timeinfo;
time_t startTime;
time_t endTime;
time_t curTime;
time_t candleStartTime;
strtime.tm_hour = 9; //Error here
strtime.tm_min = 15; //Error here
strtime.tm_sec = 00; //Error here
void PrintMarketData(void **args,nsString sPfName)
{
    curTime = time (NULL);
    timeinfo = localtime (&curTime);
    int curYear = timeinfo->tm_year;
    int curMonth = timeinfo->tm_mon;
    int curDay = timeinfo->tm_mday;
    strtime.tm_year = curYear;
    strtime.tm_mon = curMonth;
    strtime.tm_mday = curDay;
}

对于这三行:

strtime.tm_hour = 9; //Error here
strtime.tm_min = 15; //Error here
strtime.tm_sec = 00; //Error here

你不能像那样在全局作用域中初始化一个全局实例(逐行赋值语句)。这必须在函数内完成:

你可以试试这个:

struct tm strtime = {0, 15, 9};

假设strtime的成员按照tm_sec, tm_min,然后是tm_hour的顺序声明,这可能是可行的。但是我不能保证struct tm的成员顺序在每个平台上都是标准的。

最好还是显式初始化就像你在main中看到的那样