Zacatecnicke dotazy v C

František Burian BuFran na seznam.cz
Pátek Prosinec 18 11:02:24 CET 2015


Dobry den,

  U Pascalu mate ten hlavickovy soubor taky, jen je umisteny na zacatku toho
pascaloveho souboru, kde mate ty deklarace ktere nize v souboru popisete. 
Holt si zvyknete ze pro C je potreba tohle rozdelit na dva soubory.

No a proc mit hlavicky ? Predstavte si pripad. Mate 3 moduly, A,B,C. V 
modulu A vyuzivate funkci z B, v b zC, v C z A ... at budete ceckove soubory
includovat v jakemkoliv poradi, porad to bude rvat ze neco neni definovano. 
Pokud z toho udelate tri jednotky ke kompilaci a udelate korektne tri 
hlavickove soubory, bude vam vse chodit bez problemu, linker se postara o 
spravne volani vzajemnych modulu. 

Kdyby vas napadlo dat tu hlavicku do C souboru, a napriklad A i B vyuziva C,
a v obou includnete C, a v mainu includnete A,B i C muzou nastat dve veci, 
budto nekonecny cyklus vzajemneho includovani, nebo opetovna deklarace toho 
sameho. Oboji kompilator zarizne s chybou - to je mimochodem duvod, mit v 
hlavickovem souboru minimum informaci (zadny kod) a podmineny text #ifndef 
xx #define xx ... hlavicka .. #endif konec souboru

S pozdravem,

 Burian



---------- Původní zpráva ----------
Od: Pavel Kutina <hw na prelude.cz>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 18. 12. 2015 10:43:46
Předmět: Re: Zacatecnicke dotazy v C

"Priznam se, ze jsem ostuda ostudna a web arduina jsem prochazel jen zbezne 
a 
v mistech, ktere jsem akutne potreboval. Tohle mi uniklo, ted uz je jasne, 
ze asi bude lepsi v projektu udrzovat poradek...

A co se tyka prdeni v divadle - tam si dokazu celkem predstavit, proc bych 
to nemel delat, pripadne co to pozitivniho ci negativniho mne (nebo okoli) 
prinese. Ale proc neincludovat .c netusim - konkretne treba soubor s fonty 
obsahuje celkem jedno velke pole a to je vsechno, to k nemu mam delat 
hlavicku a tu includovat? Co s kusy kodu, u kterych nechci, aby mi prekazely

v aktualnim souboru? U Pascalu to bylo celkem jednoduche - co je hotove, ven

s tim do dalsiho souboru, ten nainkludovat. Proc je to v C spatne? 
Mimochodem, ten "#include fonts.c" jsem "zdedil" spolu s knihovnou pro 
ovladani TFT, tu jsem sice kompletne prepsal (takze jsem praci s 
displejem -za cenu drobnych kompromisu, jako je treba nesnadna 
prenositelnost- zrychlil zhruba tricetinasobne), ale ten include uz tam 
zustal.

Jinak pouzivani .h je dalsi bod na mem soukromem seznamu k vyjasneni (dobre,

u knihoven si funkci vysvetlim celkem snadno), jak koukam, u C je potreba k 
programovani i nejaka ta literarni zajmova cinnost, tak si holt budu 
nasledujicich ctrnact dnu pred spanim cist misto Vondrusky nejakeho 
Ritchieho :)

Pavel Kutina



----- Original Message ----- 
From: "Milan B." <milan na bastl.sk>
To: <hw-list na list.hw.cz>
Sent: Friday, December 18, 2015 2:02 AM
Subject: Re: Zacatecnicke dotazy v C


On 18. 12. 2015 1:23, Pavel Kutina wrote:
> 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...
>

Ale ved sa to chova tak, ako je to popisane:
https://www.arduino.cc/en/Hacking/BuildProcess

<cite>
When your sketch is compiled, all tabs with no extension are
concatenated together to form the "main sketch file". Tabs with .c or
.cpp extensions are compiled separately. To use tabs with a .h
extension, you need to #include it (using "double quotes" not <angle
brackets>).
</cite>

Takze otvori vsetky subory pri starte a potom zo vsetkych otvorenych
zlepi vysledok....

Mimochodom, toto nerobte:
#include <xxx.c>
a
#include "xxx.c"

inkludovat *.c alebo *.cpp je nieco ako prdet v divadle.

-m-

> 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

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

_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20151218/3aa74edd/attachment.html>


Další informace o konferenci Hw-list