Function may be unsafe.

0

Witam,

C4996 : 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To dissable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Ten fagment kodu generuje błąd:

	time_t localTime;
	tm *ptr;

	time(&localTime);
	ptr = localtime(&localTime);

Próbowałem:

  • _CRT_SECURE_NO_WARNINGS w definicjach preprocesora
  • #define _CRT_SECURE_NO_WARNINGS na początku kodu
  • Wyłączenie SDL checks
  • Wyłączenie traktowania ostrzeżeń jako błędów
  • Wyłączenie wszystkich błędów
  • #pragma warning(disable : 4996) na początku pliku

Czy ktoś z was ma pomysł jak wyłączyć ten błąd? A może ktoś potrafi to ominąć funkcją localtime_s lub jakąkolwiek inną?

Pozdrawiam

0

Dlaczego nie użyjesz po prostu localtime_s jak sugeruje ostrzeżenie?

Opcjonalnie spróbuj tego:

#pragma warning(disable : 4996)
0

localtime korzysta ze zmiennej globalnej, więc jest niebezpieczne np. przy wielowątkowym wywołaniu. Użyj localtime_s zgodnie z dokumentacją:

time_t localTime;
tm tm_obj;
 
time(&localTime);
auto ptr = localtime_s(&localTime, &tm_obj);

Okazuje się, że Microsoft w swojej wspaniałości zdecydował się utworzyć funkcję localtime_s o innym prototypie niż ta standardowa. Dokumentacja tutaj.

time_t localTime;
tm tm_obj;
auto ptr = &tm_obj; 
time(&localTime);
localtime_s(ptr, &localTime);

1 użytkowników online, w tym zalogowanych: 0, gości: 1