Diskuze: Deklarace proměnných
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 14 zpráv z 14.
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.


První co vídím bez hlubšího zamyšlení:
extern uint8_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, const uint8_t *progmem_s);
To je deklarace funkce -- předpokládám, že používáš nějakou kostru z
intrenetu? .)
Někde voláš tuto funkci se špatným druhým argumentem, proto:
expected 'const uint8_t *' but argument is of type 'char *'
Ano, máš pravdu, editace na fóru není nejlepší. Na druhou stranu můžeš příspěvek upravit po odeslání. Na jiném známém Unix/Linux serveru ho zase můžeš prohlédnou před odesláním, nikoliv však opravit.
Tak ten projekt je odtud http://mcu.cz/…t-n2898.html ten projekt je tady http://mcu.cz/…ether37b.zip to je hotový projekt a překládám ho v Atollic TrueSTUDIO for ARM Lite 5.2.1 nevíte jak to deklarovat dobře?díky za pomoc
Jestli jsem to pochopil dobře, tak to varování vzniká proto, že daná funkce očekává ve svém parametru hodnotu typu uint8_t *, ale ty ji předáváš char *. Jelikož na daném čipu bude char * určitě 8bitový (nevím, co říká norma C o možných velikostech tohoto typu), tak by toto varování pro výslednou binárku nemělo nic znamenat.
Dokonce bych řekl, že toho varování si jsou autoři projektu vědomi. U větších projektů se mi málokdy stalo, že by překlad proběhl bez jediného varování.
Není to obecně košér, ale zkus si při kompilaci vypnout varování,
které je brané jako chyba. Pokud bys kompiloval s GCC, pak když nastavíš
příznak -Werror, pak všechny varování kompilátoru jsou brány
jako chyby. Pokud to vypneš, projde ti spousta věcí -- avšak i ty, které
není dobré podceňovat. Druhá možnost je zkusit parametr funkce přetypovat
na ukazatel na uint8_t. Zřejmě někde tu proměnnou, kterou
dosazuješ musíš deklarovat sám, pak ji tedy rovnou deklaruj tak, jak to chce
kompilátor.
Typ uint8_t je vždy 8 bitů, char nemusí, i když
většinou bude.
V souboru simple_server.c voláš tuto funkci a předáváš ji
řetězec jako ukazatel na char jak jistě víš.například na
řádce 86:
"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>"
To jsem ten projekt nepsal já
to jsem převzal už hotový projekt. Mě to taky zarazilo že tam cpe
string i když si možná pomyslíš že dělám machra když mě to teď
ukázal ale říkám že jsem nebyl "vychovávám v C" k mě veliké smůle
protože prajazyk pro všechno je C díky
Hodně zdaru, C je lehké v knize, těžké v projektu -- zkus si to přetypovat, mustr je zde:
char * message1 = "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>";
uint8_t * message2 = (uint8_t *) m1;
Pardon, m1 má být message1 -- nebo obráceně --
šotek .)
No jestli to nevadí ve výsledné funkcionalitě tak to předělávat nebudu a toto bych potřeboval vědět ve výsledné binárce mělo být na konci srozumitelný text v tomto případě jednoduchá webová stránka když jsem natáhl binárku pomocí ST-Linku tak jsem tam nic nenašel nebo je to nějak zakódované jako je to delphi v typu
record a:string;a:='hura'
d9ky
Většina triků s uintX_t je kvůli přenositelnosti, protože
velikost základních typů je víceméně závislá na architektuře. Jestli to
není mission/safety critical/portable projekt, tak bych se tím
netrápil.
není mission/safety critical/portableprojekt
co to je
?
To je trochu vtip .) Ale pro vysvělení:
Pokud potřebuješ, aby byl projekt portován na různé architektury, můžeš
vyžadovat typ, který má všude stejnou velikost, pak používáš
uintx_t, Třeba při práci s grafikou -- úplně blízko železu
(hardware) -- tzv. low-level programování, mikročipy atd. Jak sem
psal, není potřeba se tím teď zaobírat, ale při programování věcí,
které nesmí havarovat -- spadnout -- tzv. kriticky bezpečné aplikace --
musíš znát přesně svoji cílovou architekturu, kompilátor a specifikaci
jazyka. Ani já neoplývám těmito znalostmi na takové úrovni, abych se do
něčeho takového pouštěl. Pokud máš zájem, podívej se na jazyk Ada a
něco kolem toho: http://www.adacore.com/…rs/about/ada
Zobrazeno 14 zpráv z 14.