Diskuze: Rozdílné chování na Linuxu a Windows
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
tady by možná stálo za to si do té metody pohnoutSe umístit breakpoint (třeba i podmíněný) a zkusit si opravdu prokrokovat, co se v danou situaci děje. Nevím, jakým způsobem hledáš chyby. V tomhle případě by krokování nemuselo být až tak náročné.
Díval jsem se jen na příslušnou metodu dané třídy, jak jsi ji uvedl ve svém příspěvku. Je samozřejmě možné, že ti někde nějaký ukazatel ukazuje někam, kam nemá, nebo nějaká část tvého programu přpeisuje paměť, kde nemá (tyhle věci se mohou chovat rozdílně na Linuxu a na Windows).
Jinak by bylo dobré, kdybys před uploadem zdrojáků na web odstranil různé dočasné soubory, kterých, jak se mi zdá, tam máš víc než dost.
Jinak svádět vinu na kompilátor je cesta do pekel. Ne že by chyby v překladačích neexistovaly (1-2 měsíce zpátky jsme se s jednou potkali), ale není to moc pravděpodobné. Operační systém ale může tvůj program ovlivňovat i ve věcech, kterých sis nevšiml. Těžko takhle říci. Musel bych prolézat celý zdroják, což se mi, přiznám se, dnes rozhodně nechce.
Děkuji. S těmi ukazateli mívám často problém. Vlastně jsem rád, když mi aplikace nespadne kvůli neoprávněnému přístupu do paměti. Použít breakpointy mě nenapadlo, asi zkusím trochu přehodnotit, jak vyhodnocuji kolize, protože se mi to zdá možná příliš dlouhé a mám pocit, že jsem to už kdysi vyřešil jednodušeji.
No jo, ty dočasné soubory, ty tam nadělal Linux a jelikož jsem to komprimoval na něm, tak jsem je neviděl.
Tak už je to vyřešené. Problém byl v tom, že funkce, která měla vracet true/false, vracela jen true nebo nic. Byla to funkce koliduje ve třídě Mapa.
To je jeden z důvodů, proč ve svém kódu používám Pravidlo jednoho returnu. Pak se mi nemůže stát, že by funkce někdy hodnotu nevracela. Některé překladače dokážou situaci, kdy jedna větev výpočtu ve funkci nevrací žádnou hodnotu (což je nepřesně řečeno, funkce vždy vrací hodnotu, alespoň na rozšířených architekturách), detekovat a ohlásit ji prostřednictvím varování. Nelze to ale detekovat zdaleka vždy.
Jinak, co jsem viděl pár metod tvého kódu, docela často tam máš něco ve smyslu:
if (podminka)
return true;
else return false;
To lze ekvivalentně napsat takto:
return (podminka);
Hodnota podmínky není nic speciálního, jedná se vlatně o logický typ, což v čistém C bude číslo, v C++ už snad existuje něco jako bool.
Returnů mívám ve funkci či metodě klidně i deset. Je to lepší než break.
Aby funkce vždy vracela nějakou hodnotu, stačí na její konec připsat return s nějakou výchozí hodnotou.
Kit: jasně, záleží na každém, jak se mu dobře programuje. Myslím, že u mně jeden return ve funkci snížil výskyt některýc hchyb (spolu s dalšími opatřeními), takže ho používám a mám ho rád. Ale ať si každý programuje, jak chce.
Na druhou stranu chápu, že třeba v Javě se v returnu chyba udělat nedá, ale v C++ je to raz dva. Proto mám v Javě jistotu, že i když těch returnů je 10, tak jsou všechny správně a žádný nechybí.
Zobrazeno 9 zpráv z 9.