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 11:30 | Komunita

Etherpad (Wikipedie), svobodný online webový textový editor umožnující spolupráci v reálném čase, se stal oficiálním projektem organizace Software Freedom Conservancy (Wikipedie). Vývojáři Etherpadu se tak mohou stejně jako vývojáři dalších projektů soustředit pouze na vývoj softwaru a vše kolem zařídí Software Freedom Conservancy. Spuštěna byla instance Etherpadu pad.sfconservancy.org.

Ladislav Hagara | Komentářů: 1
dnes 10:40 | Zajímavý článek

Lukáš Růžička se v článku Workrave ve Fedoře aneb jak si nevytunelovat karpál na MojeFedora.cz věnuje aplikaci Workrave (Wikipedie) na sledování času stráveného na počítači, která může pomoci vyhnout se negativním účinkům práce s počítačem (RSI, CTS), nebo je alespoň výrazně zmírnit.

Ladislav Hagara | Komentářů: 1
dnes 10:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Shadow Warrior: Special Edition běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 1
včera 23:11 | Nová verze

Byla vydána verze 2.4.0 analyzátoru síťového provozu Wireshark. Jedná se o první stabilní verzi nové řady 2.4. Podrobný přehled novinek v poznámkách k vydání. V červnu proběhla konference SharkFest’17 US věnovaná Wiresharku. Záznamy přednášek jsou k dispozici na YouTube.

Ladislav Hagara | Komentářů: 0
včera 13:11 | Pozvánky

Spolek OpenAlt zve příznivce otevřeného přístupu na 142. brněnský sraz, který proběhne v pátek 21. července od 18:00 hodin ve Sport Centru Srbská (Srbská 4). Od 19:00 je pro zájemce zamluveno hřiště na plážový volejbal.

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

V GNOME Soubory, původně Nautilus, konkrétně v generování náhledů exe, msi, dll a lnk souborů byla nalezena a opravena bezpečnostní chyba CVE-2017-11421 s názvem Bad Taste. Při otevření složky obsahující tyto soubory může být spuštěn VBScript obsažen v názvech těchto souborů.

Ladislav Hagara | Komentářů: 2
včera 11:00 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 308 bezpečnostních chyb. V Oracle Java SE je například opraveno 32 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 28 z nich. V Oracle MySQL je opraveno 30 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 9 z nich.

Ladislav Hagara | Komentářů: 0
včera 01:00 | Komunita

Mark Krenz, známý svým twitterovým účtem @climagic (Command Line Magic), kde ukazuje, co vše a jak lze dělat v příkazovém řádku, přednášel včera v Praze. Záznam přednášky je k dispozici na YouTube.

Ladislav Hagara | Komentářů: 1
19.7. 10:00 | Nová verze

Microsoft vydal Skype pro Linux ve verzi 5.4 Beta. Nejnovější Skype pro Linux je postaven na frameworku Electron 1.7.4 a přináší skupinové videohovory.

Ladislav Hagara | Komentářů: 11
19.7. 06:00 | Nová verze

Werner Koch, zakladatel a hlavní vývojář GnuPG, oznámil vydání verze 1.8.0 svobodné kryptografické knihovny Libgcrypt. Jedná se o první stabilní verzi nové řady 1.8. Ta je API i ABI kompatibilní s řadou 1.7. Z novinek vývojáři zdůrazňují podporu kryptografických hašovacích funkcí Blake2 (Wikpedie), šifrovací mód XTS nebo zvýšení výkonu na architektuře ARM.

Ladislav Hagara | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (7%)
 (31%)
 (1%)
 (10%)
 (43%)
 (8%)
Celkem 1031 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    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: 805×
    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: 48
    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: 48
    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: 48
    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: 66 | 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: 66 | 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: 48
    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.