Zacatecnicke dotazy v C

Pavel Kutina hw na prelude.cz
Pátek Prosinec 18 01:23:18 CET 2015


Diky za obsahle shrnuti.

Bod a) jsem otestoval a funguje, vyhovuje, citelnost textu se vyrazne 
zlepsila (tedy ve srovnani se zapisem po charu, knizku bych takhle zapisovat 
nechtel) - kdyz takhle napisete duvod, proc se to tak chova, prestane to byt 
magie a dava to smysl.

Bod b) - ono to Arduinovske IDE ma "uzasnou"" vlastnost, ze pri startu 
otevre vsechny soubor .ino, .c a .h, ktere najde v adresari projektu. I kdyz 
se nikde v textove podobe nejaky vzajemny include nevyskytuje, zrejme staci, 
ze o nem vi editor a linkeru uz ho predhodi spravne. Smysl mi to nedava, ale 
chova se to tak...

Co se tyka dalsich nejasnosti, tak nejvic mne ted aktualne trapily tyhle tri 
zminene, zbytek se urcite casem objevi, jen si je ted nevybavim.

Jeste jednou diky.

Pavel Kutina


----- Original Message ----- 
From: "Jan Waclawek" <konfera na efton.sk>
To: "HW-news" <hw-list na list.hw.cz>; "HW-news" <hw-list na list.hw.cz>
Sent: Thursday, December 17, 2015 11:05 PM
Subject: Re: Zacatecnicke dotazy v C


>tak to bylo vcelku OK, i -dejme tomu- pouzitelne a citelne v editoru. Hacek
>nastal v okamziku, kdy po takhle zapsanem znaku v retezci nasledovalo
>pismeno "e" - prekladac to pochopil jako unicode znak

Nie - prekladac to pochopil ako sucast hexa hodnoty v escape sekvencii.

C99, 6.4.4.4 Character constants
7 Each octal or hexadecimal escape sequence is the longest sequence of
characters that can
constitute the escape sequence.


Musite tu escape sekvenciu "nasilne" prerusit - vlozte tam dve uvodzovky.
To funguje preto, lebo

"retazec1" whitespace "retazec2"

preprocesor zlepi do ekvivalentu

"retazec1retazec2"

C99, 5.1.1.2 Translation phases
6. Adjacent string literal tokens are concatenated.



>//--------------------------------------
>
>b) jak funguje extern promenne? Mam vedle projektu odlozeny fonty ve
>fonts.c, v nem v podstate jen:
>
>const uint8_t simpleFont[][8] =
>{
> {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x00
> {0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x00, 0x00}, // 1
>...
>
>Kdesi v jednom header u jedne z knihoven je
>extern uint8_t simpleFont[][8];
>
>OK, funguje to - ale z ceho se linker dozvedel, kde tu promennou hedat?


Z toho prostredia. Linker je volany nejakym prikazovym riadkom, v nom je
uvedeny zoznam modulov ktore ma zlinkovat, a medzi nimi je aj fonts.o
ktory bol predtym prelozeny z fonts.c. Vsetko toto pred Vami to prostredie
schovava.


>Obsah se nacita spravne, ale samotny fonts.c nemam nikde inkludovany, jen
>lezi ve stejnem adresari - to to fakt prolejza vsechny soubory v adresari,
>co kdyby tam ta deklarace nahodou nekde byla?

Ja to prostredie nepoznam ani nechcem poznat; je mozne ze to robi takto, a
je tiez mozne ze jednoducho prilinkuje vsetko co je v tom adresari,
header-neheader, plus prilepi svoje kniznice (tie mimochodom vzdy
preklada, ak sa nemylim, co tiez nie je prilis obvykle). V "normalnych"
IDE rucne vyklikate akysi strom zdrojovych suborov a to IDE znova urobi
nejaky magic podla nejakych svojich obvykle obskurnych a nedokumentovanych
postupov. Dalej normalni ludia si napisu ten prikazovy riadok sami,
obvykle za pomoci make. No a potom existuje skupina militantnych *nixakov,
ktori pouzivaju generatory makefile typu automake, kde sa ten zoznam znova
vytvara pomocou magicu, mozno lepsie dokumentovaneho ako u tych IDE.

Prihrejem si polievocku http://www.efton.sk/tmp/C_ch12.pdf ale vacsina s
tymto suvisiacich veci je aj tak v inych kapitolach.



>//--------------------------------------
>
>c) asi jsem uplne nepochopil include, resp. rozdil mezi
>#include <xxx.c>
>a
>#include "xxx.c"
>
>Chapu dobre, ze pri pouziti hranatych zavorek prekladac hleda prislusne
>soubory nekde v definovanych mistech (nejake search paths, libraries atd.),
>kdezto s uvozovkami zacina prohledavat od aktualniho adresare?


Zhruba ano.



>//--------------------------------------
>
>Mam samozrejme asi tak pet set dalsich drobnych nejasnosti, ale jednak se
>snazim googlit, druhak opisovat, ale nektere veci jsou tak obecne, ze ani 
>to
>googleni k rozumnym vysledkum nevede. Hodne pomaha Herout, ale k tomu mi
>zase chybi druhy dil :)



No dajte. Pripadne na nejakom inom fore (menovite uzone), bo na hw-list je
toto tak trocha OT.


wek


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



Další informace o konferenci Hw-list