Buongiorno,
ho il seguente semplicissimo programmino, che viene compilato (ed eseguito) correttamente con VS2019 ma non con GCC (installato con cygwin).
#define __STDC_WANT_LIB_EXT1__ 1
#include <ctime>
#include <chrono>
#include <string>
#include <iostream>
using namespace std;
int main () {
char dateTimeStr[20];
struct tm buf;
time_t t = time(NULL);
//localtime_s(&buf, &t); // Microsoft CRT version
localtime_s(&t, &buf); // C++ standard library version
strftime(dateTimeStr, 20, "%F %T", &buf);
chrono::milliseconds milliSecond = chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch());
string milliSecondStr = to_string(milliSecond.count());
milliSecondStr = milliSecondStr.substr(milliSecondStr.size() - 3);
cout << string(dateTimeStr) + "." + milliSecondStr + " TEST";
}
Questo é l'output del comando di compilazione
g++ -Wall -Wextra -Wpedantic test.cpp -o test
test.cpp: In function 'int main()':
test.cpp:14:2: error: 'localtime_s' was not declared in this scope
localtime_s(&t, &buf); // C++ standard library version
^~~~~~~~~~~
test.cpp:14:2: note: suggested alternative: 'localtime_r'
localtime_s(&t, &buf); // C++ standard library version
^~~~~~~~~~~
localtime_r
Come riportato nella
pagina di riferimento della standard library C++, ho aggiunto la direttiva #define __STDC_WANT_LIB_EXT1__ 1.
Qualcuno sa darmi qualche suggerimento per risolvere questo problema?
Grazie in anticipo a chi saprá aiutarmi.
Ciao.