abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 02:00 | Nová verze

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 3
    včera 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

    Ladislav Hagara | Komentářů: 5
    včera 12:22 | Bezpečnostní upozornění

    Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 05:22 | Zajímavý software

    QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 6
    včera 04:55 | Nová verze

    Byla vydána nová verze 259 správce systému a služeb systemd (Wikipedie, GitHub).

    Ladislav Hagara | Komentářů: 0
    včera 02:55 | Zajímavý článek

    Cloudflare Radar poskytuje aktuální informace o globálním internetovém provozu, útocích nebo trendech. Publikován byl celkový přehled za rok 2025. Globální internetový provoz vzrostl v roce 2025 o 19 %.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (33%)
     (33%)
     (33%)
    Celkem 6 hlasů
     Komentářů: 10, poslední dnes 12:54
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: jazyk C: prepis funkce na makro

    29.4.2008 11:36 Michal Dudek
    jazyk C: prepis funkce na makro
    Přečteno: 853×
    Dobry den, zajimalo by me, jak by sla tato funkce prepsat na makro (#define...):
    int mystrlen(char *string)
    {
      int i = 0;
    
      while (string[i] != '\0')
        i++;
    
      return i;
    }
    

    Odpovědi

    29.4.2008 12:31 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    1. Co jste zkusil, že vám to nefunguje? Neměl by v tom být problém, aspoň pro gcc ne. #define ...() ({... i;})

    2. K čemu to potřebujete? Pokud jde o rychlost, tak jednak to už makro nejspíš je (a dost pravděpodobně to bude rychlejší než cokoliv co napíšete), a dvak použít inline je téměř vždy čistší.
    29.4.2008 13:07 jas
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    #define mystrlen(str,a) while(str[a]!='\0') a++;

    Pouzitie:
    #define mystrlen(str,a) while(str[a]!='\0') a++; int main(){ char str[10]; scanf("%s", str); int i = 0; mystrlen(str,i); printf("%d\n", i); return 0; }
    29.4.2008 13:10 jas
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Sorry, za to pouzitie, zabudol som na tagy.
    Takze este raz:
    #include <stdio.h>
    #define mystrlen(str,a) while(str[a]!='\0') a++;
    
    
    int main(){
            char str[10];
            scanf("%s", str);
            int i = 0;
            mystrlen(str,i);
            printf("%d\n", i);
            return 0;
    }
    
    29.4.2008 13:22 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Odporuca sa v makre kazde pouzitie premennej zatvorkovat. Makro funguje na syntaktickej urovni a ak sa do neho nacpe nejaky zlomyselny vyraz, vznikne z toho galimatias.
    29.4.2008 13:31 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    On nemusí být ani moc zlomyslný, často stačí pouhé 'i+1'.
    29.4.2008 13:36 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Souhlas. A to i se dá dát dovnitř makra přes {int i = 0; ...} (aspoň gcc to umí, a je to vhodné obalit ještě kulatými), ale pak se dostáváme k omezením Cčkových maker, protože nevím o způsobu jak udělat unikátní identifikátor ála (gensym), takže pokud je paramatrem např. argv[i], tak se ta i z různých scopů zastíní.

    Lze použít _i, ale v jen o trošku složitějším případě i tak to makro nebude moc být voláno na sebe sama... zbytečné komplikace. I v Lispu, kde jsou makra na o hodně lepší úrovni, platí zásada používat je jen tam kde funkce nestačí. To tohle není.
    29.4.2008 22:06 jas
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Ono, vzhladom na to, ze to makro bude mat pravdepodobne len tuto jedinu funkciu, do ktorej bude vstupovat i = 0, tak to az tak osetrovat netreba, navyse to bol len taky priklad. 0 "problemoch" makier samozrejme cosi viem.
    Ono celkovo by som osobne najskor pouzil pred funkciou privlastok inline, cim by som ziskal vyhody makier a neprisiel o vyhody funkcii.
    29.4.2008 13:39 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    chýba vám tam druhý parameter, max možná dĺžka reťazca (i.e. max hodnota pre i)
    29.4.2008 14:01 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    BTW, ten nový trend dávat stejnou otázku na roota i sem mi začíná lézt krkem.
    30.4.2008 06:35 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Ako mala táto odpoveď pomôcť opytujúcemu sa vyriešiť jeho problém?
    30.4.2008 10:49 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Mohla by mu pomoci neobtěžovat ostatní tím, že musejí udržovat dvě (a více, máme ještě diskusní list, LinuxExpress atd.) paralelní diskuse nad stejnou otázkou.
    30.4.2008 11:10 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Velice jednoduše. Mně už to také trochu leze krkem, takže pokud je více takových, kteří následně tyto dotazy začnou ignorovat, tak to prostě informuje tazatele že někdy neodpověď může být způsobena zahlcením. Je samozřejmě na něm, co považuje za lepší cestu k získání odpovědi.
    30.4.2008 12:12 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Hehe, je to smiesne. Ze mame N najrozlicnejsich distribucii Linuxu, M balickovacich sytemov, ..., je v poriadku , to je sloboda. Ze mame viacero linuxovych portalov, to zrazu nie je v poriadku? Ak vas obtazuje sledovat ten isty obsah na viacerych portaloch, tak si jednoducho vyberte jeden, ktory je pre vas najvhodnejsi a ostatne ignorujte. Su to portaly s podobnou tematikou, takze temy sa budu nevyhnutne opakovat. Tak v zpravickach ako aj v diskusnych forach. To nie je chyba, to je crta.

    Pouzivatel chcel najst riesenie svojho problemu. (Nebudem teraz riesit, nakolko si ho mohol najst samostudiom ci nakolko je off-topic.) Pouzil preto viacero kanalov, kde predpokladal, ze moze riesenie ziskat. Svoju otazku polozil rozlicnym mnozinam ludi, lebo prirodzene ocakaval, ze cim vacsi pocet ludi oslovi, tym skor dostane odpoved. Ze tieto rozlicne mnoziny ludi maju neprazdny prienik? Inu, je to tak. Ale je to slobodne rozhodnutie prvkov tohto prienku.

    Takze: ze rovnake problemy citate v dvoch diskusnych forach, je vasa vec a vas problem. Ak proti tomu chcete nieco urobit, urobte tak konstruktivne (je viacero sposobov, ziadny nie je trivialny), a nie staznostami, ze "toto ste uz citali niekde inde".
    30.4.2008 13:29 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Ovšem diskuzní fórum není neplacená technická podpora. Takže pokud někdo na diskuzní fórum dotaz pokládá, měl by to činit s vědomím, že chce také nějak přispět – třeba tím, že bude ochoten odpovídat na doplňující dotazy, popíše výsledné řešení. Ovšem pokud takový dotaz položí sobecky na co nejvíce místech, aby se jen co nejrychleji dozvěděl řešení, nemá to s takovouto vstřícností nic společného – zbytečně budou lidé odpovídat na více místech, nebude na jednom místě kompletní řešení nebo prodiskutované všechny návrhy, ale bude kus tu a kus tamhle.

    Takže nejde o to, že by někomu vadilo, že stejný dotaz čte vícekrát. Jde o to, že tím tazatel dává přímo ukázkově najevo, že na diskuzní fórum a lidi okolo něj zvysoka kašle, že jenom potřebuje, aby někdo co nejrychleji a zadarmo vyřešil jeho problém.
    2.5.2008 19:39 mato
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    tvoje vysvetlenie nie je scestne, no treba brat do uvahy aj pripad, kedy by clovek pytajuci sa na otazku v roznych forach po zisteni spavneho riesenia napisal na vsetky fora, na ktorych sa pytal .. tym padom vlastne nezneuziva fora .. daju sa najst (aj tu na abclinuxu) prispevky, kde sa clovek pyta a sam si aj odpoveda .. ci uz nasiel tu odpoved sam, alebo mu pomohli na inych forach, to uz nezalezi .. ide o to, aby sme si pomahali..

    plateny support tu nie je, a prave preto mas pravo ten thread necitat .. pri platenom supporte si to dovolit nemozes ;)

    2.5.2008 20:23 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    tvoje vysvetlenie nie je scestne, no treba brat do uvahy aj pripad, kedy by clovek pytajuci sa na otazku v roznych forach po zisteni spavneho riesenia napisal na vsetky fora, na ktorych sa pytal .. tym padom vlastne nezneuziva fora .. daju sa najst (aj tu na abclinuxu) prispevky, kde sa clovek pyta a sam si aj odpoveda .. ci uz nasiel tu odpoved sam, alebo mu pomohli na inych forach, to uz nezalezi .. ide o to, aby sme si pomahali..
    To ale stále ještě neřeší ten problém, že se tím jeho dotazem budou lidi pravděpodobně zabývat i přesto, že nějká část už je někde vyřešená. Pochybuju o tom, že by dotyčný tazatel promptně každou odpověď z jednoho fóra kopíroval na druhé.
    2.5.2008 20:36 mato
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    to mas pravdu, a preto som aj napisal, ze s tebou vlastne suhlasim .. ja osobne som uz aj tu na abclinuxu posielal prispevky, na ktore som si sam odpovedal (lebo som na ne prisiel).. tak isto som aj pastoval odpovede na vsetky fora, kde som sa pytal (i ked ja sa moc casto nepytam .. nie ze by som vsetko vedel ;) - len nevyuzivam casto fora na pytanie sa .. )
    ono je to ale tazko riesit vseobecne - je to vzdy pripad od pripadu .. ak niekto pravidelne spamuje vsetky fora, tak uz asi nie je cosi v poriadku
    30.4.2008 22:51 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Jedna věc je "vybrat si svobodně fórum kde položím dotaz" a druhá věc je "položit stejný dotaz všude možně", případně na dvě podobná místa. Vzhledem k tomu, že já jsem jedním z těch, kterých se tazatel ptá, tak když se mne zeptá třikrát na totéž je to pro mne stejné, jako kdybych měl platit třikrát stejné daně :) (I dvakrát je moc). Když přijde výběrčí daní jednou, je to v pořádku. Když přijde podruhé, je to na pováženou. Když se mne zeptá potřetí během dvou dnů je to nepřijatelné. Ovšem opět opakuji -- přijít může, ale nebudu platit a pošlu na něj psy (cestou bude jistě křičet něco o svobodě podnikání a že přece může chodit kolikrát chce).

    No pan Jirsák to vysvětlil lépe. Pokládat stejný dotaz do více podobných fór je proti netiketě a je to vlastně jistá forma nespolupráce s těmi, koho se tazatel ptá, protože někdy je pro vyřešení problému spolupracovat, a mezi portály se o poznání hůř linkuje a odkazuje.
    30.4.2008 12:07 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Viz obě reakce výše. Kromě toho jsem už předtím k tématu odpověděl jak se dalo - problém tazatele není z otázky zřejmý (palčivě hryzající zvědavost? jiný důvod pro to dělat co ho zajímá nevidím).

    Když už jsme u toho, jak měla pomoci tazateli *vaše* reakce? (pokud se zeptáte znovu na to samé vy: tenhle komentář tazateli už nijak)
    30.4.2008 12:19 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Když už jsme u toho, jak měla pomoci tazateli *vaše* reakce?
    Je zrejme, ze s tymto problemom patrne nijako. Dolezite je, ze cele toto vlakno bolo zalozene niekym, koho sice obtazuje citat tu istu otazku v dvoch forach, ale uz ho neobtazuje pisat prispevok, v ktorom fnuka nad tymto svojim osobnym problemom, ktory si sposobil len on sam. Takze ano, moje prispevky v tomto vlakne su rovnako neuzitocne ako tie Tvoje. Rozdiel je ten, ze ten Tvoj prispevok bol pricinou, tie moje a vsetkych dalsich su dosledkom.
    30.4.2008 12:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Takže když někdo upozorní tazatele na neslušnost jeho počínání, je to podle vás "fňukání"? Bylo by snad podle vás vhodnější takový duplicitní dotaz ignorovat, aby tazatel nejen nedostal odpověď, ale ani se nedozvěděl proč?
    30.4.2008 12:44 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše ot: multiposting
    Zdá se, že těch lidí kterým to vadí je trochu více, a duplicitní není jen tenhle jeden dotaz. Z toho pohledu je diskuse na téma zda to je slušné a jak na to lidi budou v delší perspektivě reagovat podle mne žádoucí, byť uznávám že tohle není ideální místo. Pokud by to někdo chtěl a uměl přesunout jinam, nejsem proti.

    Třeba se ukáže, že vzhledem k tomu že ty dva servery mají stejné zaměření tak kdo to nedá vždy do obou je sám proti sobě, a vznikne někde ještě jinde formulář umožňující paralelní zadávání. No, doufám že ne.

    A nebo můžeme najít nějaký flame o multipostingu na Usenetu a opsat argumenty.
    1.5.2008 02:09 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    O důvod víc nečíst rootí diskuse, když tam je to samé jako tady :-) Je to fakt otravný. Vlízt na jeden web, věnovat čas přečtení otázky a zamyšlení se nad ní, případně odpovědět, pak se zkusit kouknout co je nového na druhém webu, věnovat čas přečtení otázky... hm tu už jsem někde viděl... a člověk by tazateli to kliknutí a pět sekund navíc nejraději rozmlátil o hlavu. To není vtip nebo ironie, myslím to vážně. Pět sekund tady, pět sekund tam, a když to takhle začnou dělat všichni, čtení diskusí a řešení cizích problémů už nebude zábava, ale práce, a práci bez zábavy já zadarmo nedělám. Je to vlastně takový spam. Fakt nepotřebuju číst třikrát za den stejnou věc.

    Navíc pokud se stane to, že jedna množina lidí bude chodit jen na Root a druhá jen na AbcLinuxu, pak jednu stejnou odpověď v ideálním případě píšou dva lidi. Místo toho by ji ale mohl psát jen jeden a druhý se věnovat něčemu jinému/někomu dalšímu. Přeloženo pro tebe: plýtvají se prostředky.
    29.4.2008 17:05 crusoe
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    V pripade C++ , by bolo zaujimave pouzit inline
    oroborus avatar 29.4.2008 18:52 oroborus | skóre: 20 | blog: Bulanci
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    >V pripade C++ , by bolo zaujimave pouzit inline

    V podstate moze pouzit klucove slovo inline aj v prekladacoch jazyka C, ktore podporuju standard C99

    Zdroj : wikipedia
    29.4.2008 22:20 jas
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    Pri gcc sa pouziva prepinac -std=c99, defaultne berie, myslim c89.
    30.4.2008 14:22 Ivan
    Rozbalit Rozbalit vše OT: Re: jazyk C: prepis funkce na makro
    Ahoj, muzu se zeptat na co to potrebujes? Takovyhle veci jsou "Essence of pure evil". Makra preprocesoru by se mela pouzivat co nejmene a urcite ne na takovyhle veci. Makra preprocesoru snizuji prehlednost kodu, to je duvod proc novejsi prog. jazyky uz preprocesor neobsahuji. Otresny priklad kam az to muze vest je treba mozilla. Makra by se mela pouzivat jen pro takove pripady, na ktere prostredky programovaciho jazyka nestaci.
    1.5.2008 02:30 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: jazyk C: prepis funkce na makro
    #define MYSTRLEN(s) strlen(s)
    Škoda že nejdou udělat rekurzivní makra, hned bych pro tebe měl jednu akademicky ukázkovou udpověď.

    btw, v původní funkci: const char *string by bylo lepší; také by místo while šlo použít for, možná by to bylo přehlednější, ale je to věc názoru.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.