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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 6
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 7
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 1
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
1.12. 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 763 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Š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: 802×
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.