Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Ebola 21 Března 2011, 19:38:19
-
Ahoj, potřeboval bych poradit s takovou blbostí. Už hodinu googlím ve všech světových jazycích ale řešení jsem nenašel. Programuju v céčku v geditu a chci do hlavního programu fláknout include dalšího souboru s kódem. Tak nějak jsem po půl hodině trápení a přemýšlení "kde jsem to tehdy viděl" dostal do bodu kdy jsem použil stejný předpis jako pro hlavičkový soubor, na jednoduchém příkladě:
int main(int argc, char **argv)
{
#include </home/uzivatel/Plocha/C/druhy.c>
return 0;
}
Tohle mi v pohodě šlape, ale jde mi o to že bych chtěl tu cestu napsat relativně (abych když to přenesu na jiný PC do jiné zložky nemusel přepisovat všechny diry v includech). Když totiž nahradím celou cestu jen #include <druhy.c> tak to automaticky nesežere kompilátor. Je mi jasné že to určitě nějak jde a bude to nějaká blbost s tečkou, dolarem a lomítkem nebo tak nějak. Bohužel jsem všechny možnosti co mě napadly neúspěšně vyzkoušel a budu rád za každou radu.
-
nedávej cestu do lomenejch závorek, ale do uvozovek
#include "druhy.c"
http://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html
-
Ovšem tahle includovat části kódu...no fuj.
-
Ovšem tahle includovat části kódu...no fuj.
OK, jak to je lepší podle tebe? ;D
-
Tak nic takovýho jsem v životě teda neviděl, na co něco takovýho vůbec potřebuješ ? Jestli chceš zkompilovat 2 zdrojový soubory dohromady tak to normálně zadáš v kompilátoru nebo si napiš makefile a v něm si to udělej.
-
Programuju vlastní aplikaci a chci vystrčit ven některé kusy kódu, aby hlavní kód nebyl 150 tisíc řádků dlouhá slátanina (to číslo je pochopitelně s nadsázkou), ale aby to bylo třeba 6 souborů zvlášť a každý by plnil svůj účel. V praxi například načítaní z csv. Udělám hlavní program a některé větve korekce znaků šoupnu externě aby mi nepřekáželi a pokaždé když bych chtěl změnit proměnnou tak nemusel přeskakovat 100 tísíc řádků kódu.
-
Ovšem tahle includovat části kódu...no fuj.
OK, jak to je lepší podle tebe? ;D
obsah souboru druhy.c
void ficura()
{
...
}
a obsah main.c
#include "druhy.c"
int main()
{
ficura();
return 0;
}
-
Tak nic takovýho jsem v životě teda neviděl, na co něco takovýho vůbec potřebuješ ? Jestli chceš zkompilovat 2 zdrojový soubory dohromady tak to normálně zadáš v kompilátoru nebo si napiš makefile a v něm si to udělej.
A nebo pokud jste líný jako já, tak použijete nějaké IDE, aby jste si nemusel Makefile tvořit sám 8)
-
K tomuhle to co ty chceš se používají hlavičkový soubory, kde si nadeklaruješ funkce atd a inkluduješ jen hlavičkový soubor. Funkce pak můžeš volat libovolně tam, kde máš inkludovaný hlavičkový soubor.
Tak nic takovýho jsem v životě teda neviděl, na co něco takovýho vůbec potřebuješ ? Jestli chceš zkompilovat 2 zdrojový soubory dohromady tak to normálně zadáš v kompilátoru nebo si napiš makefile a v něm si to udělej.
A nebo pokud jste líný jako já, tak použijete nějaké IDE, aby jste si nemusel Makefile tvořit sám 8)
Kdo říkal, že já si ho píšu sám ;D
-
@Ebola:
z toho co pises je patrne , ze nejsi zadny profik (z toho take plyne , ze je nepravdepodobne, ze bys programoval napr. pro mikroprocesory a podobne, kde je C jedina rozumna moznosta) a v Cecku mas velke mezery, takze bych ti radil, se na C vykaslat a prejit na nejaky jazyk vyssi urovne (na zpracovani textu je napr. skvely Perl, jestli chces neco s lidstejsi syntaxi tak napr. Python - k tomu nedavno vydalo CZ.NIC vybornou knizku(zdarma))
P.S.: Stesti ze jsou D. Ritchie a K. Thompson na zivu - protoze byt mrtvi, tak pri pohledu na includovani zdrojoveho kodu misto hlavicek rotuji v hrobe jako Kaplanova turbina :D
-
:D Každej někdy začínaj, já třeba nesnášel na vejšce, že se učilo OOP v Pascalu... tak jsem všechny projekty programoval v C++ a profesor mě za to zrovna nemiloval. Taky to tak dopadlo. 8)
-
Ahoj, dneska jsem do toho ve volné chvíli vrtal a nakonec jsem to vyřešil podle Sachy.
Udělal jsem si druhý soubor s funkcí, includoval ho a pak jsem ji jen zavolal. Když už bude stát za prd můj program tak ať to je alespoň profesionálně napsané :D
Jsem na výšce a každý semestr programujem v jiném jazyce, navíc k tomu ještě fyzika a sítě, takže není čas se do toho ponořit více. Zatím jsem v C mimo školu neprogramoval, tak si jen zkouším syntaxi na příkladech z jiných jazyků.
Dík všem. :P
-
@Ebola:
z toho co pises je patrne , ze nejsi zadny profik (...) takze bych ti radil, se na C vykaslat a prejit na nejaky jazyk vyssi urovne (...)
Jen tak mimochodem... U nás to je naopak, v zimním semetru jsem znásilňoval registry procesoru v ASM a postupujeme k těm vyšším, příští rok je v plánu perl, php,.... a za další rok python a další :D
-
Jen tak mimochodem... U nás to je naopak, v zimním semetru jsem znásilňoval registry procesoru v ASM a postupujeme k těm vyšším, příští rok je v plánu perl, php,.... a za další rok python a další :D
Rozumné :)
-
To svoje si hold musí člověk objevit sám. ;)
-
...
Jen tak mimochodem... U nás to je naopak, v zimním semetru jsem znásilňoval registry procesoru v ASM a postupujeme k těm vyšším, příští rok je v plánu perl, php,.... a za další rok python a další :D
no u nas na FIT VUTBR, to bylo priblizne stejne (az na to, ze asm, jsme delali paralelne s C - coz je vyborne na pochopeni pointeru a buffer overflow), ale v pripade, ze nejsi samouk, tak je pro me o to nepochopitelnejsi, jak muzes delat takove boty (u nas by me za neco takoveho ve cviku ze Zakladu programovani(C) cvicici nejspis povesil za koule do pruvanu, protoze jinak by jemu udelal to same garant predmetu ;) )
nechal jsem se trochu unest, shrnul bych to doporucenim precist si "Ucebnice jazyka C" od Herouta
-
Totální souhlas s Heroutem, to je fantastické čtivo... se slzou v oku vzpomínám na chvíle, když jsem si to četl před spaním. Potom jsem to vyměnil na Mistrovství v C++, které jsem nikdy nedočetl. :D
-
Ahoj, potřeboval bych poradit s takovou blbostí. Už hodinu googlím ve všech světových jazycích ale řešení jsem nenašel. Programuju v céčku v geditu a chci do hlavního programu fláknout include dalšího souboru s kódem. Tak nějak jsem po půl hodině trápení a přemýšlení "kde jsem to tehdy viděl" dostal do bodu kdy jsem použil stejný předpis jako pro hlavičkový soubor, na jednoduchém příkladě:
int main(int argc, char **argv)
{
#include </home/uzivatel/Plocha/C/druhy.c>
return 0;
}
Tohle mi v pohodě šlape, ale jde mi o to že bych chtěl tu cestu napsat relativně (abych když to přenesu na jiný PC do jiné zložky nemusel přepisovat všechny diry v includech). Když totiž nahradím celou cestu jen #include <druhy.c> tak to automaticky nesežere kompilátor. Je mi jasné že to určitě nějak jde a bude to nějaká blbost s tečkou, dolarem a lomítkem nebo tak nějak. Bohužel jsem všechny možnosti co mě napadly neúspěšně vyzkoušel a budu rád za každou radu.
Hele určitě inkluduj na začátku každýho zrojovýho souboru. Uvozovky už tu zazněly.