Zacatecnicke dotazy v C
Jan Waclawek
konfera na efton.sk
Čtvrtek Prosinec 17 23:05:18 CET 2015
>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
Další informace o konferenci Hw-list