Tag: c++

Entries for tag "c++", ordered from most recent. Entry count: 138.

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 15 16 17 18 >

# INF-y i NAN-y

Sun
13
May 2007

Liczby zmiennoprzecinkowe typu float czy double mogą przyjmować pewne specjalne wartości, m.in. oznaczające nieskończoność, nazywane -INF i +INF, a osiągalne w C++ za pomocą nagłówka <limits> i wywołania std::numeric_limits<float>::infinity(). Ciekawe jest, że w przeciwieństwie do liczb całkowitych dzielenie zmiennoprzecinkowe przez zero nie powoduje "wywalenia" programu, ale daje w wyniku takie właśnie nieskończoności.

Z mojego doświadczenia wynika, że zachowują się one absolutnie sensownie. -(+INF) daje -INF, -INF jest mniejsze od każdej liczby a +INF jest większe, -INF jest mniejsze od +INF, +INF - 2.f daje +INF, -INF * -2.f daje +INF itd. Zastanawia mnie więc, dlaczego wszyscy tych specjalnych wartości tak się boją, a nikt ich nie stosuje w swoim kodzie? Ostatnio znalazłem na to kolejny przykład - programiści nVidia w swoich przykładowych kodach używają liczby 1e32f jako wartości specjalnej.

Comments | #c++ #math Share

# Visual C++ - debugger wchodzi do źródeł biblioteki standardowej

Fri
04
May 2007

Ano wchodzi... Jest to szczególnie niewygodne w przypadku używania STL. Wystarczy, że podając parametry do jakiejś funkcji czy metody robimy coś przy okazji, na przykład:

Funkcja(string("Łańcuch"), MojWektor[2]);

Zadałem o tym pytanie na forum i rozwiązanie się znalazło. Trzeba otóż:

  1. Zalogować się na konto o uprawnieniach admina.
  2. Wejść do Rejestru Windows.
  3. Wejść do klucza:
    • Visual C++ 2005 Professional: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver
    • Visual C++ 2005 Express: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\8.0\NativeDE\StepOver
  4. Utworzyć nową "wartość ciągu". Nazwa dowolna.
  5. Jako jej dane wpisać wyrażenie regularne oznaczające symbole, do których debugger ma nie wchodzić, np. jedno krótkie acz potężne: std\:\:.*

Ponowne uruchomienie Visuala nie jest konieczne - wystarczy nowa sesja debugowania (F5).

Nowa wersja tego wpisu (po angielsku) znajduje się TUTAJ.

Comments | #c++ #visual studio Share

# Singletony precz!

Tue
01
May 2007

W ramach porządków w kodzie pozbyłem się dzisiaj wszystkich singletonów zamieniając je na zwykłe, globalne zmienne wskaźnikowe. Tak, wiem co sobie teraz pomyślą wszyscy obrońcy programowania obiektowego... Ja nie mam nic do OOP ani nawet do wzorców projektowych, ale jednak krócej niż res::ResManager::GetInstance().Cośtam jest napisać res::g_ResManager->Cośtam. Poza tym to działa szybciej, bo mówcie co chcecie, ale sprawdzać czy obiekt już istnieje tysiące razy na klatkę to nie jest zerowy narzut czasu.

Przede wszystkim jednak mam teraz kontrolę nad tym, kiedy obiekt powstaje i kiedy jest niszczony, bo... robię to sam. Mogę więc powiedzieć dokładnie, czy w pewnej chwili to czy tamto jest utworzone, w jakiej kolejności jest alokowane i zwalniane oraz zagwarantować, że w danym momencie dany obiekt na pewno istnieje. Słowem - mam w pełni formalnie zdefiniowany czas życia obiektów. To rozwiązało problem, który miałem podczas finalizacji różnych modułów, a z którym nie sposób było inaczej sobie poradzić. Co za ulga! A już zaczynałem wierzyć, że singletony są OK...

Comments | #c++ #philosophy #software engineering Share

# Precompiled Headers w Visual C++

Sun
25
Feb 2007

Napisałem mały, bogato "ilustrowany" artykuł, w którym pokazałem, jak w praktyce użyć mechanizmu Precompiled Headers w Visual C++, żeby wielokrotnie przyspieszyć kompilację swoich programów. Zapraszam do lektury - Precompiled Headers w Visual C++.

Comments | #teaching #visual studio #c++ Share

# Książki Meyersa

Sun
15
Oct 2006

Skończyłem właśnie lekturę ostatniej spośród trzech dzieł Scotta Meyersa:

  1. C++. 50 efektywnych sposobów na udoskonalenie Twoich programów (ang. Effective C++)
  2. STL w praktyce. 50 sposobów efektywnego wykorzystania. (ang. Effective STL)
  3. Język C++ bardziej efektywny (ang. More Effective C++)

To doprawdy niezwykłe książki. Każda z nich jest zbiorem kilkudziesięciu krótkich, niezależnych porad, sztuczek i technik dotyczących różnych szczegółów języka i jego biblioteki standardowej. Z pewnością nie są przeznaczone dla początkujących - do ich lektury język trzeba już znać i to całkiem nieźle. Zaawansowanym jednak posłużą jako nieoceniona pomoc w nabywaniu wprawy i wypracowaniu dobrych praktyk.

We wstępie do Effective C++ Meyers cytuje Petroniusza:

Mądrość i piękno bardzo rzadko idą w parze.

Ten cytat, niestety, jak ulał pasuje do języka C++ i sposobu myślenia, jaki reprezentują jego twórcy (jak również twórcy biblioteki Boost i im podobni). Mając wciąż w pamięci język C# i bibliotekę standardową .NET, którymi posługiwałem się przez ostatnie 3 miesiące, gdzieś w środku czuję, że jednak to nie tak powinno być...

Comments | #c++ #literature Share

# Wskaźniki na metody w C++

Sun
15
Oct 2006

Istnieje coś takiego, jak wskaźnik na metodę (inaczej delegat - delegate, zdarzenie - event, sygnał - signal czy jak kto tam nazwie). Chodzi o wskaźnik na dowolną metodę konkretnego obiektu dowolnej klasy, która ma zgodny nagłówek. Mechanizm ten przydatny jest szczególnie podczas pisania systemu GUI. Posiada go każdy nowoczesny język programowania, jak Delphi czy C#. Każdy z wyjątkiem C++. Jak sobie z tym poradzić?

Różni ludzie różnie kombinują. Pojawia się tutaj wiele zagadnień, np. pytanie czy można zapewnić wygodną składnię bez użycia makr albo elastyczność bez użycia rzutowania typów. Jedni w ogóle omiają problem robiąc to prymitywnie, np. łańcuszkiem if-else albo wielkim switchem. Inni wymyślają własne implementacje, a jeszcze inni korzystają z gotowych. Tych gotowych jest wiele i są bardzo różnorodne. Niektóre z nich to mechanizm wbudowany w bibliotekę Qt czy wxWidgets, a z niezależnych modułów - sigslot.

Ja jakiś czas temu wypatrzyłem bibliotekę FastDelegate dołączoną do artykułu na The Code Project i właśnie ją polecam. Jest szybka, elastyczna, przenośna, wygodna i ogólnie elegancka. Napisałem do niej krótką dokumentację, żeby można było zacząć jej używać bez czytania całego artykułu.

Comments | #c++ Share

# The Final Quest - Common Lib 6.0

Tue
19
Sep 2006

Jak wyszło tak wyszło, ale formalnie ukończyłem pisanie pierwszej wersji modułów bazowych szóstej iteracji mojego projektu. Pomyślałem sobie, że nic mi nie ubędzie, jak udostępnię to 451 kB kodu na licencji GNU LGPL - może komuś się przyda. Może jacyś mniej zaawansowani sobie go użyją, a jacyś bardziej - zgłoszą mi swoje cenne uwagi. Tak więc oto jest: Common Lib 6.0.

Comments | #productions #c++ Share

# Rzutowanie typów w C++

Tue
18
Jul 2006

Tak się składa, że napisałem artykuł - taki, o którym myślałem już od dawna. Nazywa się Rzutowanie typów w C++ i traktuje dokładnie o tym, na co wskazuje jego tytuł. Zapraszam do lektury.

Comments | #c++ #productions Share

Pages: > 1 ... 15 16 17 18 >

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2018