Asi jste se již setkali s tím, že někdo při definici šablony používal klíčové slovo typename
a někdo jiný zase class
. O tom, zda je mezi nimi rozdíl a kdy použít které klíčové slovo je následující příspěvek.
programování
Minule jsem zmínil, že při commitování do systémů pro správu revizí bychom se měli vyvarovat nadbytečných bílých znaků na koncích řádků. Kolega mě požádal, zda bych to mohl více rozvést, a já tak v následujícím příspěvku učiním :).
Přináším několik poznámek ke commitování (bez překladu, protože mě žádný vhodný nenapadá) do verzovacích systémů, abych se na ně mohl odkazovat v diskusích apod., měl je pohromadě a nemusel je psát všude od znova. V příspěvku počítám s tím, že jste součástí většího a dlouhodobějšího projektu a máte rádi pořádek. V opačném případě, např. pokud pracujete na něčem vlastním či pracujete na školním projektu v týmu složeném pouze z nepořádných studentů, moje poznámky s klidem ignorujte :).
O existenci ukazatelů na funkce většina programátorů v C a C++ ví, i když je třeba příliš nepoužívá. V následujícím příspěvku bych chtěl upozornit na některá syntaktická pozlátka, která lze při práci s ukazateli na funkce použít.
Shodou okolností jsem se dostal k zajímavému námětu na otázku, a tak toho hned využívám. Tentokrát bude úkolem vysvětlit chování programu. Zdroj otázky i původce řešení zveřejním až s uveřejněním řešení.
Když se zeptáte programátora v jazyce C na for cyklus, tak vám odvětí, že se skládá z hlavičky, která je tvořena třemi výrazy oddělenými středníky, kde do první se dává deklarace proměnných, do druhé podmínka ukončení cyklu, a do poslední akce provedená po každé iteraci. Každá z těchto částí je nepovinná. A pak následuje tělo cyklu. Co je ale zajímavé, tak je to, že to není tak úplně pravda a volitelnost částí záleží na typu for cyklu, který se použije.
Pokud ve svém C či C++ programu porovnáváte znaménková a bezznaménková čísla, používáte překladač GCC a máte zaplá varování, tak jste se již určitě setkali s varováním warning: comparison between signed and unsigned integer expressions
. Toto varování bývá velmi často přehlíženo, a to mnohdy z toho důvodu, že dotyčnému není jasné, kde by mohl vzniknout problém. Cílem tohoto krátkého příspěvku je na tento problém poukázat.
Tentokrát budeme doplňovat program, který nevypadá jako Céčkový ani C++ový, tak, že bude přeložitelný překladačem C či C++ a bude dělat to samé, co původní program.
Pravidelně se setkávám s mylným názorem, že "ukazatel je číslo". V tomto příspěvku bych chtěl (1) poukázat na to, že tvrdit, že "ukazatel je číslo", je to stejné, jako tvrdit, že "Bozetechova 2, 612 66 Brno, Czech Republic" je číslo a (2) že ukazatele a čísla nelze jen tak mezi sebou převádět.
Tentokrát bude úloha/hádanka buď značně triviální, nebo obtížná, a to v závislosti na tom, zda prokouknete trik, který bude třeba využít ;).