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