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í
×
    včera 23:22 | Humor

    Jihokorejská Národní daňová služba (NTS) zabavila kryptoměnu Pre-retogeum (PRTG) v hodnotě 5,6 milionu dolarů. Pochlubila se v tiskové zprávě, do které vložila fotografii zabavených USB flash disků s kryptoměnovými peněženkami spolu se souvisejícími ručně napsanými mnemotechnickými obnovovacími frázemi. Krátce na to byla kryptoměna v hodnotě 4,8 milionu dolarů odcizena. O několik hodin ale vrácena, jelikož PRTG je extrémně nelikvidní, s denním objemem obchodování kolem 332 dolarů a zalistováním na jediné burze, MEXC [Bitcoin.com].

    Ladislav Hagara | Komentářů: 2
    včera 16:33 | Nová verze

    Komunita kolem Linuxu From Scratch (LFS) vydala nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů Linux From Scratch 13.0 a Beyond Linux From Scratch 13.0. Pouze se systemd.

    Ladislav Hagara | Komentářů: 0
    včera 16:00 | Nová verze

    Byla vydána nová stabilní major verze 25.12 linuxové distribuce primárně určené pro routery a vestavěné systémy OpenWrt (Wikipedie). Jedná se o nástupce předchozí major verze 24.10. Přehled novinek v poznámkách k vydání. Podporováno je více než 2200 zařízení.

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

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za únor (YouTube). Odstraněn byl veškerý kód napsaný ve Swiftu. JavaScriptový engine LibJS byl reimplementován v Rustu.

    Ladislav Hagara | Komentářů: 0
    5.3. 21:11 | Nová verze

    Byla vydána verze 1.94.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example. Zveřejněny byly výsledky průzkumu mezi vývojáři v programovacím jazyce Rust: 2025 State of Rust Survey Results.

    Ladislav Hagara | Komentářů: 7
    5.3. 17:33 | Komunita

    Google zveřejnil seznam 185 organizací přijatých do letošního Google Summer of Code (GSoC). Dle plánu se zájemci přihlašují od 16. do 31. března. Vydělat si mohou od 750 do 6600 dolarů. V Česku a na Slovensku je to 900 dolarů za malý, 1800 dolarů za střední a 3600 dolarů za velký projekt. Další informace v často kladených otázkách (FAQ). K dispozici jsou také statistiky z minulých let.

    Ladislav Hagara | Komentářů: 0
    4.3. 22:55 | Nová verze

    Byla vydána únorová aktualizace aneb nová verze 1.110 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.110 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 8
    4.3. 18:11 | IT novinky

    Apple představil 13palcový MacBook Neo s čipem A18 Pro. V základní konfiguraci za 16 990 Kč.

    Ladislav Hagara | Komentářů: 55
    4.3. 12:22 | Komunita

    Kalifornský zákon AB 1043 platný od 1. ledna 2027 vyžaduje, aby operační systémy požadovaly po uživatelích věk nebo datum narození a skrze API poskytovaly aplikacím informaci, zda je uživatel mladší 13 let, má 13 až 16 let, má 16 až 18 let nebo má alespoň 18 let. Vývojáři linuxových distribucí řeší, co s tím (Ubuntu, Fedora, …).

    Ladislav Hagara | Komentářů: 104
    4.3. 11:44 | Pozvánky

    Konference LinuxDays 2026 proběhne o víkendu 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Čekají vás desítky přednášek, workshopy, stánky a setkání se spoustou chytrých lidí.

    Petr Krčmář | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (7%)
     (0%)
     (11%)
     (28%)
     (2%)
     (5%)
     (2%)
     (13%)
     (25%)
    Celkem 1026 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: jak na "namespace" v C

    17.1.2005 19:56 jiri vejsada
    jak na "namespace" v C
    Přečteno: 335×
    pro vetsi linuxuvy projekt v C, pro ktery bude event. prispivat vice clenu je treba vyresit problem s kolizi jmen funkci. Tak jak to delaji v glib, gnome mohou ty jmena funkci "glib_nekomu_pripadat_trochu_prislis_dlouhe". Nezna nejaky ostrileny projektant lepsi moznost. Jak by jste to delali?

    Odpovědi

    17.1.2005 21:05 Petr
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    Vetsi projekty v jazyku C vyuzivaji tzv. modularity -> Projekt je rozdelen do nekolika modulu. Kazdy modul spravuje nejakej logickej celek a exportuje pouze potrebne funkce, oastatni funkce jsou deklarovany jako static.
    17.1.2005 23:25 jiri vejsada
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    kdyz nejaky log. modul sestava napr. z 30 funkci a exportuje napr. jednu funkci, musi byt z duvodu static deklarace vsechny tyto funkce v jednou souboru? To je jiz kvuli make trochu nevyhoda, ne?

    Ale take jsme o tom uvazovali, nase obavy v projektu jsou, zdali je to mozno obecne tak rozdelit, ze bude prevazna cast funkci skutecne "pro vlastni potrebu" a jen minimum na "export".

    Ten problem je, ze projekt zpocatku vubec nevi, kdo co bude dodavat a realizovat - napr. bude vice programatoru dodavat moduly pro sklady a ta obava je, ze kazdy druhy pouzije "get_store_value" ....
    17.1.2005 23:57 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    Nemusí být v jednom souboru. Ale pak musíš něco vědět o linkeru a resolování symbolů. K tomu je asi nejlepší si přečíst článek How to write shared libraries[1] od Ulricha Dreppera, který je velmi dobře napsaný. Je tam popsáno několik možností jak, vysvětlit linkeru, že se symboly ,exportují` jen v rámci knihovny.

    Kromě toho je 30 funkcí celkem málo, obvzvlášť tvoří-li jeden logický celkek, dát je do jednoho souboru je zdaleka nejjednodušší řešení.

    [1] Týká se tedy hlavně knihoven; nevím, jak je ten váš projekt strukturovaný, ale normálním lidem stačí dvě úrovně filtrování prostoru symbolů -- objekt (.o) (což zařídí static ve zdrojáku) a knihovna (viz článek). Navíc lze moduly natahovené dynamicky (dlopen() a spol.) natahovat s RTLD_LOCAL, a používat jiný mechanismus inzerování, co modul obsahuje, než špinění globálního prostoru.
    17.1.2005 22:33 Anselm
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    Už při návrhu definujte rozhraní modulů tak, aby nedocházelo ke kolizím jmen. Exportujte pouze funkce realizující toto rozhraní. Nepoužívejte přiliš obecná jména, u funkcí operujících nad daty nějaké struktury použijte jako prefix jméno té struktury. Zapomeňte na globální proměnné.
    17.1.2005 23:31 jiri vejsada
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    ... Už při návrhu definujte rozhraní modulů tak, aby nedocházelo ke kolizím jmen...

    to by me zajimalo, ale zatim si nedovedu predstavit jak je to mysleno. Bylo by mozno uvest nejaky priklad? Mam si to predstavit tak nejak, ze napr. pro sklady bude na zacatku vsech funkcnich jmen store_ a u faktur napr. invoice_ ...?
    17.1.2005 23:39 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    Kód se píše jednou, ale čte mnohokrát.

    Píšeš-li C knihovnu a nepoužíváš pro všechny symboly prefix podle jména knihovny, tak se ti všichni vysmějí a vzápětí vynadají. To vysvětluje to glib_. Pokud projekt neexportuje žádná API, pro rozšiřující moduly nebo vůbec pro cokoli, tak si to samozřejmě dělej, jak chceš, ale větší projekty obvykle nějaká API exportují.

    Co se týče zbytku -- to je ta část nekomu_pripadat_trochu_prislis_dlouhe, tak ten se týká odlišení jmenných prostorů jen částečně:

    1. Metody objektů jsou normální funkce C, a tedy v globálním rozsahu platnosti (nebo jak se to jmenuje česky -- zkrátka scope). Jediný způsob, jak se s tím rozumně vypořádat, je přidat jméno třídy do jména metody (BTW v C++ se to děje také, ale dělá to kompilátor). Tudíž co bys jinde zapsal container->add() nebo container.add(), jmenuje se [gtk_]container_add().

    2. Nikdo neví, co dělá mbsnrtowcs(). Tedy někdo asi ano, ale... Funkce gtk_spin_button_set_snap_to_ticks() by se při zachování předchozích bodů stále mohla jmenovat gtk_spnbtn_ssc2(). Pak bys četl cizí kód a na každou druhou funkci se musel dívat do dokumentace, co dělá (tedy, kdyby nějaká použitelná existovala, takže spíš do zdrojáku). Naproti tomu každý ví, co dělá gtk_spin_button_set_snap_to_ticks() (pokud zná widget GtkSpinButton).

    A teď k tomu, co máš dělat ty: Dělej to stejně. Psát dlouhá jména funkcí je práce textového editoru a umí to dobře. Zvolíš-li rozumně prefixy knihovna_, modul_ či objekt_, nemusí být ty názvy ani tak hrozně dlouhé, ale podstatná je stejně ta popisná druhá část, ne prefix[y].
    18.1.2005 12:35 jiri vejsada
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    dik za obsahly prispevek. Rozjedeme to tim smerem, sam jsem zvedav jak se budou jednotlivi vyvojari drzet te umluvy, aby ta popisna cast nebyla zbytecne dlouha.

    Napadlo me jeste, ze by nebylo od veci, kdyby se daly najit podobne veci nejak shromazdene na jednom miste, aby se to nemuselo problematicky vzdy dohledavat. Takova nejaka rukovet praktickych postupu v programovani. Nic podobneho jsem zatim nevidel.
    18.1.2005 14:10 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: jak na "namespace" v C
    Mě osobně dlouhá jména nepřijdou problém, protože moje vývojové prostředí (vim) je bez problémů doplňuje za mě (^P), stejně tak mi nevadí ani krátká jména, protože když chci vidět co která funkce dělá tak se na ni kouknu (^[) a pokud je komentovaná, tak je to celkem rychlé. Pokud ne, tak někomu vynadám. (Nejčastěji sobě.) V takovém malém projektíku
    hynek[sfmat]$ cat *.c *.h|wc
       9428   33383  271711
    
    který píšu objektově, ale v ANSI C (kvůli přenositelnosti na platformy co C++ neznají, ano i takové jsou mezi námi) mi to nedělá velký problém.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

    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.