Цитата(Olej @ Jul 30 2017, 13:00)
А для thread safe реализации есть стандартизованная функция
Код
struct tm *gmtime_r(const time_t *timep, struct tm *result);
P.S. А что у вас там за приблуда gmtime_s ? ... так я и не соображу
есть варианты gmtime_r и gmtime_s и _gmtime32_s, _gmtime64_s
у меня windows 7. но надо чтобы работало и в windows XP и в 10-ке с 8-кой.
у самого С++ Buildera нет заголовков этих функций,
но вполне возможно они есть
в самом windows в каких нибудь dll.
я тока не знаю в каких и как их вызвать.
поэтому и спрашиваю как это обойти.
у меня вариант где то найти код gmtime и переделать его
на подобии gmtime_r или gmtime_s
нашел решение
гружу dll через LoadLibrary
нахожу адрес функции и вызываю ее:
CODE
typedef int (*pfn)(struct tm*, const long*);
pfn gmtime32_s;
LibHandle = LoadLibrary("msvcrt.dll");
if(LibHandle == NULL){
Application->MessageBox("Error!", "Ошибка загрузки dll", MB_ICONERROR);
}
(FARPROC)gmtime32_s = GetProcAddress(LibHandle, "_gmtime32_s");
ну и далее:
gmtime32_s(&t, &ls);