Проблема объявления time_t во время компиляции

У меня есть 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;
}

1 ответ

Для этих трех строк:

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,

Другие вопросы по тегам