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 12:44 | Upozornění

    Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.

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

    Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si

    … více »
    Ladislav Hagara | Komentářů: 2
    dnes 00:55 | Pozvánky

    Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do

    … více »
    bkralik | Komentářů: 0
    včera 11:33 | Nová verze

    Byl vydán LineageOS 24 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu. LineageOS 24 je založený na Androidu 17.

    Ladislav Hagara | Komentářů: 0
    včera 03:55 | IT novinky

    Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.

    Ladislav Hagara | Komentářů: 1
    10.10. 23:11 | Bezpečnostní upozornění

    Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.

    vencour | Komentářů: 1
    9.10. 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 19
    9.10. 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 10
    9.10. 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 15
    9.10. 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 14
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (6%)
     (2%)
     (14%)
     (20%)
    Celkem 2835 hlasů
     Komentářů: 32, poslední včera 17:02
    Rozcestník

    Dotaz: Otázka pro zkušeného Céčkaře

    Wan-To avatar 19.7.2006 11:49 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Otázka pro zkušeného Céčkaře
    Přečteno: 401×
    Zrovna jsem zkoumal zdrojáky OpenTTD a našel jsem tuto funkce (uvádím jen hlavičku):
    void CDECL ShowInfoF(const char *str, ...);
    
    Nejsou mi jasné dvě věci:

    1) Co znamená CDECL mezi typem a jménem funkce? Připadá mi to jako syntaktická chyba (asi není, když to šlo zkompilovat :-) ). Podobnou věc jsem viděl i ve Win32 API, tam bylo tuším int APIENTRY WinMain(). Nebo také v JNI - JNIEXPORT void JNICALL Java_MyCanvas_paint (JNIEnv* env, jobject canvas, jobject graphics). Tady je ještě navíc nějaké JNIEXPORT před návratovým typem.

    2) Tři tečky místo parametru - to je nepovinný počet parametrů? Jak se pak k těmto parametrům ve funkci přistupuje, když nejsou pojmenované? (možná to je něco úplně jiného, já s C začínám).

    Předem díky za odpověď,

    Martin

    Odpovědi

    19.7.2006 12:13 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    CDECL je makro, které obsahuje doplňující informace k funkci, podle názvu bych soudil, že se rozbalí ve Windows na _cdecl. Na co jinde, nevím. Ale chce to projít zdrojáky a použít preprocesor. Informace jsou na stránkách microsoftu.

    Použití proměnného počtu argumentů je například zde. Ale proč se tedy nepodíváš na tělo samotné funkce, abys věděl, jak se s tím pracuje? ;-)
    When your hammer is C++, everything begins to look like a thumb.
    Wan-To avatar 19.7.2006 12:30 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    ad 1: Takže na Windows bude vypadat hlavička funkce takto?
    void _cdecl ShowInfoF(const char *str, ...);
    
    Co se stane s funkcí, když je před jejím názvem _cdecl, je už starostí překladače?

    ad 2: Já jsem se podíval, ale vůbec nic jsem z toho nepochopil :-)
    void CDECL ShowInfoF(const char *str, ...)
    {
    	va_list va;
    	char buf[1024];
    	va_start(va, str);
    	vsprintf(buf, str, va);
    	va_end(va);
    	ShowInfo(buf);
    }
    
    19.7.2006 12:38 ondrab | skóre: 12 | Milevsko
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    19.7.2006 12:52 Jiri Uncovsky | skóre: 5
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    ad 1: je-li CDECL tak definován, tak ano. Jinde může být CDECL zanedbáno. Význam _cdecl a spol je záležitostí konkrétního překladače protože ANSI C nic takového nemá.

    ad 2: to je zrovna blbý příklad, protože ukazuje jak pracovat se seznamem parametrů (předaných přes výpustku) jako celek (tj. "převedení seznamu volitelných parametrů na jediný parametr"). Lepší příklad je v stdarg(3).
    Wan-To avatar 19.7.2006 12:55 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    ad 1: takže kdybych napsal mezi návratovou hodnotu a jméno funkce _cdecl nebo cokoliv jiného, bude to pro ANSI C syntaktická chyba?
    19.7.2006 14:52 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Ne nutně. Následující kód je podle ANSI C zcela korektní.
    #define CDECL
    
    int CDECL main(void) {
      return(0);
    }
    
    Užívej dne – možná je tvůj poslední.
    19.7.2006 15:53 Jiri Uncovsky | skóre: 5
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Ano, pokud po zpracování preprocessorem tam něco bude (vyjma specifikátorů storage-class - static/extern/typedef/register/auto) tak to bude syntaktická chyba. Proto je tam napsáno CDECL, který preprocessor MSVC nahradí _cdecl (a kterému on rozumí), ale preprocessor gcc jej zase zlikviduje.
    Heron avatar 19.7.2006 15:45 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře

    CDECL je modifikátor fce, pro kompilátor. Podobně jako __stdcall, __fastcall atd. Určují, jak se mají předávat argumenty volané funkce (přes stack, registry, haldu).

    Více zde. Doufám že mě neukamenujete za MS ;-).

    Wan-To avatar 19.7.2006 16:30 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Jde i GCC kompilátoru nějak říct, jak má předávat argumenty funkce? Existuje např. nějaká obdoba windowsího __fastcall, aby parametry uložil do registrů procesoru?

    Napadá mne akorát void funkce(register int parametr);. Nevím však, zda to funguje a pokud ano, jestli i na Windows.
    19.7.2006 16:43 hm
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gcc/function-attributes.html
    Wan-To avatar 19.7.2006 17:19 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Díky moc za všechny odpovědi. Zase jsem o něco chytřejší :-) Označuji téma za vyřešené.
    19.7.2006 20:38 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Ešte prihodím jednu informáciu, ktorá sa môže zísť pri podobných prípadoch: Pri kompilácii sa zdrojáky najprv preženú cez pre-processor, ktorý sa postará od nahradenie makier definovaných cez #define, vloženie obsahu súborov odkazovaných cez #include, vynechanie resp. vloženie kódu na základe #if a podobne. Prepínač -E zariadi, že kompilátor miesto zvyčajného vytvorenia .o vypíše výsledok pre-processingu. To znamená, že ak príkaz na kompilovanie
    gcc -DMOJEMAKRO -I/usr/X11/include -c subor.c -o subor.o
    prepíšem napr. na
    gcc -DMOJEMAKRO -I/usr/X11/include -E subor.c 
    dostanem výstup, v ktorom sa dozviem, ako sa tie makrá rozvinuli. V našom prípade nám to pomôže k tomu, že sa dozviem, ako v skutočnosti bude vyzerať deklarácia tej mojej funkcie.
    19.7.2006 23:39 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Anebo se (u gcc) dá použít volba --save-temps. Preprocesovaný kód pak bude v soubor.i (.ii pro C++) a soubor se normálně přeloží.
    Wan-To avatar 27.7.2006 08:52 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Ještě mám třetí dotaz: Je nějak možné nadefinovat si typy, u kterých budu mít jistotu, že budou na všech systémech stejně velké? Napadlo mne udělat něco takového:
    // typ myShort bude mít všude 2 bajty
    #ifdef sizeof(short) == 2
    typedef short myShort;
    #elif sizeof(int) == 2
    typedef int myShort;
    #endif
    
    Bohužel, nefunguje to. Takže to asi nebude ten správný způsob.

    Ale přece nějaká možnost existovat musí. Všiml jsem si, že třeba OpenGL nebo SDL používají typy, které jsou všude stejné. Jak na to tedy?
    27.7.2006 09:02 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Třeba Glib si deifnuje typy jako gint32 a podobné, v příslušné hlavičce je má určené třeba jako int. Pro moji danou platformu. Jinde by se musela vygenerovat jiná hlavička, kde by byl třeba short, pokud by ten byl čtyřbajtový a int ne.
    Copak toho není dost?
    27.7.2006 11:03 Michal Hocko | skóre: 7
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Zdravim. ifdef takymto sposobom fungovat ani nemoze, pretoze vyrazy sa musia vediet vyhodnotit v ramci preprocesora a ten nevie, co je sizeof atd...

    Prenositelne integer datove typy by mali na vacsine systemov byt pristupne cez

    #include <inttypes.h>
    
    Tieto typy su potom napr.
    int8_t pre 8 bitovy int znamienkovy typ, int16_t 2B znamienkovy typ atd...
    
    27.7.2006 12:50 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Pozor, tohle je častý omyl. C99 sice definuje typy jako int8_t apod., ale tyto typy nejsou povinné. Povinné jsou pouze int_least8_t, int_least16_t, int_least32_t a int_least64_t. Tedy samozřejmě i některé další, např. intptr_t, ale zrovna ty, které jste jmenoval, to nejsou. Důvod je jednoduchý: platforma totiž vůbec nemusí nabízet něco jako 16-bitové číslo.
    Wan-To avatar 27.7.2006 15:14 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Ještě mne napadl jeden způsob - určit počet bitů podle rozsahu celočíselného typu. Rozsahy jsou nadefinované v limits.h pomocí #define, takže by se měly dát porovnávat pomocí #ifdef. Je možné tento způsob používat? Nebo přece jen existuje něco lepšího?
    27.7.2006 15:23 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    To můžete, ale na C99-kompatibilních platformách je vhodnější používat standardní typy definované v <inttypes.h>. Navíc znovu upozorňuji, že technicky vzato typy jako "16-bitové číslo bez znaménka" nebo "32-bitové číslo se znaménkem" vůbec nemusejí být k dispozici.
    Wan-To avatar 28.7.2006 10:40 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Tak ještě jedna :-)

    Potřeboval bych spojit řetězec (pole char, nikoliv string z C++) dohromady s číslem tak, aby vznikl zase řetězec. Předpokládám, že zápis retezec + cislo nebude fungovat (pravděpodobně by pak retezec ukazoval o cislo bajtů v paměti dál).
    28.7.2006 10:52 Jiri Uncovsky | skóre: 5
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Veškeré konverze z čísel do řetězce se dají dělat přes formátovací funkci snprintf:

    snprintf(buffer, delka_buffer, "%s%d", retezec, cislo);
    28.7.2006 10:58 billgates | skóre: 27
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    sprintf(retezec,"%s%d",retezec,cislo);
    28.7.2006 10:59 billgates | skóre: 27
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    To riesenie vyssie je lepsie, moje ignorujte.
    28.7.2006 11:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Otázka pro zkušeného Céčkaře
    Pokládejte, prosím, nové dotazy jako nové dotazy, nepřidávejte je do diskuse ke starším.

    Založit nové vlákno • Nahoru

    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.