9 grudnia 2009
Kategorie: programowanie | Tagi: C++, namespace
komentarze: 4
Dziś chciałbym pomarudzić o tym jak to genialni programiści olewają i ignorują istnienie tak genialnego wynalazku w C++ jak przestrzenie nazw. Przestrzenie nazw rozwiązują problem kolizji nazw, szczególnie znany osobom programującym w C, gdzie istnieje jedna globalna przestrzeń nazw dla wszystkich nazw. A tym samym utrudnia pisanie programów, i odrębnych modułów. Do rozwiązania problemu przestrzeni [...]
czytaj całość »
30 listopada 2009
Kategorie: programowanie | Tagi: C++
komentarze: 11
Wszyscy wiemy czym jest preprocesor Cpp i jak działa (dla niewtajemniczonych czym jest preprocesor, jakie oferuje funkcje i pułapki polecam jeden z rozdziałów Megatutoriala Xiona). Jest to narzędzie odziedziczone z C, operujące na tekście programu, a tym samym nie mające żadnego pojęcia o składni języka jaką przetwarza. Jest narzędziem, które używane nierozważnie może łatwo doprowadzić [...]
czytaj całość »
23 listopada 2009
Kategorie: programowanie | Tagi: C++, moder C++, przemyślenia
komentarze: 2
W nawiązaniu do poprzedniej notatki, niejakim uzupełnieniem przedstawionych tam informacji i zapowiedzi o dzieleniu się głębszymi przemyśleniami i odczuciami jakimi mnie napełnił kolejny przeprowadzony code review, będą notatki przedstawiające nieco bardziej zaawansowane aspekty i techniki używane w C++. Mam tu na myśli notatki traktujące o tytułowym „modern C++”, czyli nowoczesnym i zaawansowanym C++, gdzie głównie [...]
czytaj całość »
18 listopada 2009
Kategorie: programowanie | Tagi: C++, przemyślenia
komentarze: 1
Skusiłem sie do napisania tej notatki w wyniku pogłębiającej się frustracji i zażenowania jakie mnie ogarnia, gdy po raz kolejny przeglądam jakiś kod źródłowy dowolnego oprogramowania napisanego (według jego autora) w C++. Niestety dosyć często się zdarza, że w rzeczywistości w ogóle to niewiele ma wspólnego z tym językiem, zastosowane techniki i styl mówią coś [...]
czytaj całość »
6 listopada 2009
Kategorie: programowanie | Tagi: bugs, C++, code, data alignment
komentarze: 2
Buffer overflow, czyli przepełnienie bufora jest jednym z najczęściej wykrywanych błędów w różnej maści oprogramowaniu. Błąd ten polega na zapisaniu do wyznaczonego obszaru pamięci większej ilości danych, niż zostało to przewidziane przez twórcę, powodując nadpisanie sąsiadujących z buforem komórek pamięci, co w ostateczności prowadzi do rożnych nieprzewidywanych zachowań aplikacji. W najlepszym wypadku spowoduje to „wywalenie” [...]
czytaj całość »
23 października 2009
Kategorie: programowanie | Tagi: ATL, C++, COM, libs, Windows
komentarze: 0
Ostatnio bawiłem sie z prostą aplikacją embedując kontrolkę Internet Explorera oraz silnik Gecko. Po raz pierwszy miałem nieco szerszy i dłuższy kontakt z technologią COM i XPCOM. Nieodłączny związek z COM ma biblioteka ATL (Active Template Library), która w rzeczywistości jest zbiorem klas szablonowych języka C++ opracowanych przez Microsoft. Jak sie można domyślić z nazwy, [...]
czytaj całość »
25 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, boost, C++, C++0x, code, predicate
komentarze: 0
Boost.bind to potężne narzędzie, za niedługo zobaczymy je w standardzie, obecnie dostępne w TR1. Dzięki niemu możemy pozbyć się wielu prostych i trywialnych, a także tych trochę bardziej skomplikowanych funktorów, jakie musieliśmy definiować, bo standardowe adaptory funkcyjne z STL są ograniczone. To przez niego z kodu źródłowego xime zniknie kilka predykatów, które zostaną zastąpione jedno-dwu [...]
czytaj całość »
23 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, C++, code, STL
komentarze: 0
Zbiór gotowych algorytmów z standardowej biblioteki języka C++ jest bardzo użyteczny, o tym nie trzeba długo przekonywać. Choć czasem chcąc wykonać kilka rzeczy, bądź kilka kolejnych algorytmów na tych samych danych, możemy stracić na optymalności, szczególnie jak danych jest wiele, a złożoność algorytmu liniowa. Czasem warto napisać coś dedykowanego, lub połączyć 2 algorytmy, oczywiście na [...]
czytaj całość »
5 kwietnia 2009
Kategorie: programowanie | Tagi: C++, code, eksperymenty, iterator, vc
komentarze: 0
Od wersji 2005 Visual C++ posiada opcje sprawdzania ważności iteratorów. Nie będę tu produkował tekstu opisującego jak to dokładnie działa, na stronach MSDN można znaleźć kilka artykułów na ten temat: Checked Iterators, Debug Iterator Support. W wersji debug aplikacji, program poczęstuje nas assertami, kiedy spróbujemy wykonać jakąś operacje na iteratorze bądź funkcji go wykorzystującej, w [...]
czytaj całość »
1 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, C++, code, metaprogramowanie, STL
komentarze: 4
Często w programach napisanych w C do pobierania rozmiaru tablic alokowanych przez kompilator na stosie stosuje się prostą konstrukcję z operatorem sizeof, opakowana w makro: #define SizeOfArray(array) sizeof(array) / sizeof(array[0]) W C++ zamiast makra lepiej wykorzystać wzorzec, a wtedy można to przedstawić tak: template<typename T, size_t N> inline size_t SizeOfArray(const T (&)[N]) { return N; [...]
czytaj całość »