Thread View: pl.comp.lang.c
5 messages
5 total messages
Started by szykcech
Sat, 29 Dec 2018 20:34
Modułowa aplikacja w C++ - zgłaszanie błędów przez moduły
Author: szykcech
Date: Sat, 29 Dec 2018 20:34
Date: Sat, 29 Dec 2018 20:34
7 lines
1975 bytes
1975 bytes
Witam Chcę pisać modułowe aplikacje w C++ gdzie sobie wydzielam poszczególne grupy funkcji i klas w biblioteki współdzielone. Problem na jaki natrafiłem to zgłaszanie błędów. Chcę mieć nazwę (Id) modułu jaki zgłosił błąd i numer tego błędu (wartość z enum). Obecnie aby uniknąć konfliktów nazw stosuję przestrzenie nazw różne dla każdej biblioteki. To działa, ale denerwujące jest to, że kod się robi bardzo rozwlekły tylko z powodu prawidłowego raportowania błędów. Jak rozwiązujecie taki problem w swoich aplikacjach modułowych? szczęśliwego Nowego Roku Szyk Cech
Re: Modułowa aplikacja w C++ - zgłaszanie błędów przez moduły
Author: Wojciech Muła
Date: Wed, 02 Jan 2019 23:44
Date: Wed, 02 Jan 2019 23:44
10 lines
2270 bytes
2270 bytes
On Saturday, December 29, 2018 at 9:34:44 PM UTC+1, szyk...@gmail.com wrote: > Witam > Chcę pisać modułowe aplikacje w C++ gdzie sobie wydzielam poszczególne grupy funkcji i klas w biblioteki współdzielone. Problem na jaki natrafiłem to zgłaszanie błędów. Chcę mieć nazwę (Id) modułu jaki zgłosił błąd i numer tego błędu (wartość z enum). Obecnie aby uniknąć konfliktów nazw stosuję przestrzenie nazw różne dla każdej biblioteki. To działa, ale denerwujące jest to, że kod się robi bardzo rozwlekły tylko z powodu prawidłowego raportowania błędów. > > Jak rozwiązujecie taki problem w swoich aplikacjach modułowych? Czy ja dobrze rozumiem, że masz w swoim głównym programie enumy dla każdej biblioteki? w.
Re: Modułowa aplikacja w C++ - zgłaszanie błędów przez moduły
Author: szykcech
Date: Thu, 03 Jan 2019 17:53
Date: Thu, 03 Jan 2019 17:53
9 lines
2320 bytes
2320 bytes
> > Jak rozwiązujecie taki problem w swoich aplikacjach modułowych?
>
> Czy ja dobrze rozumiem, że masz w swoim głównym programie enumy dla każdej
> biblioteki?
>
> w.
Źle rozumiesz. W każdym module (exe, biblioteki i enumy) mam plik {NazwaModułu}Definitions.h w którym mam zdefiniowane odrębne przestrzenie nazw (dla każdego modułu) i w nich zmienną QString gLibraryId oraz enum eErrorCode . I pytam się czy to jedyna droga?!? Bo wolałbym mieć coś jak wirtualna nazwa modułu (gLibraryId) i wirtualny enum (eErrorCode) - z tym że wirtualność ich miałaby zależeć od aktualnego miejsca w kodzie gdzie zostaną użyte (ta sama nazwa w różnych modułach ale inne wartości).
Re: Modułowa aplikacja w C++ - zgłaszanie błędów przez moduły
Author: Wojciech Muła
Date: Fri, 04 Jan 2019 19:26
Date: Fri, 04 Jan 2019 19:26
10 lines
2420 bytes
2420 bytes
On Thursday, January 3, 2019 at 6:53:05 PM UTC+1, szyk...@gmail.com wrote:
> Źle rozumiesz. W każdym module (exe, biblioteki i enumy) mam plik {NazwaModułu}Definitions.h w którym mam zdefiniowane odrębne przestrzenie nazw (dla każdego modułu) i w nich zmienną QString gLibraryId oraz enum eErrorCode . I pytam się czy to jedyna droga?!? Bo wolałbym mieć coś jak wirtualna nazwa modułu (gLibraryId) i wirtualny enum (eErrorCode) - z tym że wirtualność ich miałaby zależeć od aktualnego miejsca w kodzie gdzie zostaną użyte (ta sama nazwa w różnych modułach ale inne wartości).
W czym więc tkwi trudność? Pokaż kawałek kodu, bo nie
potrafię sobie tego wyobrazić.
Co robisz z tymi błędami na poziomie głównej aplikacji?
I co się dzieje w kodzie modułu?
w.
Re: Modułowa aplikacja w C++ - zgłaszanie błędów przez moduły
Author: szykcech
Date: Fri, 04 Jan 2019 20:36
Date: Fri, 04 Jan 2019 20:36
25 lines
2567 bytes
2567 bytes
> W czym więc tkwi trudność? Pokaż kawałek kodu, bo nie
> potrafię sobie tego wyobrazić.
np. Mam takie zmienne w pliku SyntaxHighlighterPluginDefinitions.h:
namespace SyntaxHighlighterPlugin
{
static QString gLibraryId = QStringLiteral("SyntaxHighlighterPlugin.so");
enum class eErrorCode // defines all codes used in the library
{
eUnknown = 1,
eSpelingSystemError,
eEncodingError
};
}
By mieć zmienną gLibraryId i eErrorCode właściwą dla każdego modułu to muszę użyć przestrzeni nazw (jak to widać).
> Co robisz z tymi błędami na poziomie głównej aplikacji?
Zbieram je. Co program z tym robi to bez znaczenia - bo może robić cokolwiek.
> I co się dzieje w kodzie modułu?
Błędy raportuję standardowym makrem z parametrami: treść wyjątku, nazwa modułu (z gLibraryId) i kod błedu (z enumu). Do tego makro dodaje info o miejscu wystąpienia wyjątku (bądź ostrzeżenia). Ląduje to na liście w obiekcie typu singleton.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads