31 października 2008
Kategorie: programowanie | Tagi: C++, code
komentarze: 1
Dziś kilka slow o funkcjach z zmienna liczba argumentów, czyli Variadic Functions ;) W ostatniej notce o makrach z zmienną listą argumentów wspomniałem o najpopularniejszej funkcji przyjmującej nieokreśloną liczbę argumentów – printf. Używanie takich funkcji jest bardzo proste, stworzenie również nie jest jakąś trudną i skomplikowaną sprawą. Niezbędne do tego celu typy i makra umożliwiające [...]
czytaj całość »
28 października 2008
Kategorie: programowanie | Tagi: C++, code, makra
komentarze: 1
Można się zdziwić, ale makra również mogą posiadać zmienną liczbę argumentów, tak jak funkcje. Najbardziej znaną funkcją o zmiennej licznie argumentów jest funkcja printf z standardowej biblioteki języka C: int printf(const char* fmt, …); Makra również posiadają taką możliwość, zwie się to, jak nazwa notki, – Variadic Macros. Proste makro TRACE opakowujące printfa: #define TRACE(fmt, [...]
czytaj całość »
24 października 2008
Kategorie: programowanie | Tagi: C++, safe exceptions
komentarze: 0
Kontynuujemy zabawy z wyjątkami ;) A co powiecie na zgłaszanie sytuacji wyjątkowych w konstruktorze globalnego obiektu? Co się stanie, gdy konstruktor rzuci wyjątkiem przed wejściem do funkcji main? Poleci zapewne terminate(). Jak zasygnalizować zaistniałą sytuację i „odwieść” program od wywołania terminate()? Obsłużyć wyjątek rzecz jasna ;) Jak przechwycić wyjątek z globalnych obiektów? Sprawa trochę skomplikowana, [...]
czytaj całość »
20 października 2008
Kategorie: programowanie | Tagi: C++, code, safe exceptions
komentarze: 0
Ostatnio trochę marudziłem o rzucaniu wyjątków w konstruktorach, to dziś może wspomnę o destruktorach i konstruktorach kopiujących. Każdy chyba wie, że nie należy rzucać wyjątków z destruktorów. To samo dotyczy konstruktora kopiującego obiektu wyjątku. Problem z destruktorami jest to związany z obsługą wyjątku przez kompilator (czas miedzy rzuceniem wyjątku a złapaniem go przez odpowiedni catch), [...]
czytaj całość »
17 października 2008
Kategorie: programowanie | Tagi: C++, code, safe exceptions
komentarze: 0
Wyjątki są najprostszą i najlepszą możliwością zgłoszenia błędów zaistniałych w konstruktorze, przez których tworzenie obiektu zakończyło się porażką. Bez sytuacji wyjątkowych nie ma bezpośredniego prostego mechanizmu zgłoszenia zaistniałej sytuacji, ponieważ konstruktor nie przekazuje żadnego typu i wartości, która mogłaby przekazać informacje o zaistniałym błędzie. Oczywiście można obejść ten problem poprzez zastosowanie dodatkowej zmiennej lokalnej do [...]
czytaj całość »