Funkcja na krytyczne błędy w praktyce

Funkcja na krytyczne błędy w praktyce
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

hej. mam taką funkcję na powiadamianie o jakiś błędach od razu z wyjściem. tylko tak się zastanawiam, że jeżeli w systemie dochodzi już do tak kuriozalnych sytuacji jak brak pamięci czy taka funkcja wgl zadziała i będzie wstanie wypisać na stderr? czy może lepiej użyć coś prostszego? znajdę gdzieś kod tych funkcji va_* ??

Kopiuj
static void fatal_err(const char* format, ... ) {
	va_list arglist;
	fprintf(stderr,"MOJPROGRAMIK: ");
	va_start(arglist, format);
	vfprintf(stderr,format,arglist);
	va_end(arglist);
	fprintf("\n");
	exit(EXIT_FAILURE);
}

        /* a tak wywoluje np. */
	if(allocptrnull)
		errmsg_ex("malloc %s\n",strerror(errno));

Pozdrawiam

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
1

Pamięć na stos i stałe jest przydzielana w momencie uruchomienia programu także jeśli nie przydzielasz nic poza tym a Twój program już jest uruchomiony to powinno być ok.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

va_* są zależne od implementacji.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

a jak to wygląda w systemach Linux? klikam sobie na va_list w Eclipse to mnie przenosi do stdio.h i

Kopiuj
typedef _G_va_list va_list;

, gdzie nie ma kodu źródłowego.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.