Я пытаюсь избавиться от зависимого от платформы кода.
Этот код получает строку, сформированную маской ("% Y-% m-% d% H:% M:% S") ипреобразовать его в структуру std :: tm и секунды std :: time.
Я хочу избавиться от необходимости зависимых от препроцессора блоков, поскольку (imho) должен быть стандартный способ сделать это на обеих платформах одинаково. strptime не существует в windows, std :: get_time не существует (?) в linux (g ++ c ++ 11).
Есть ли способ сделать этот код кроссплатформенным (windows / linux) без использованияЗаводская структура или блоки, зависящие от препроцессора?
KDATETIME& KDATETIME::operator= (const char* k)
{
std::string smask;
smask = (std::string)this->mask;
std::string sk;
sk=k;
tm.tm_isdst=-1;
#ifdef WINDOWS <<---- THIS BLOCK
std::istringstream ss(sk);
ss >> std::get_time(&tm, smask.c_str());
#else
strptime(sk.c_str(), smask.c_str(), &tm);
#endif <<------
this->time = mktime(&tm); // t is now your desired time_t
[...]
}