Проблема объявления 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
,