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 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 5
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 2
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 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.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    8.5. 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    7.5. 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    7.5. 17:33 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    7.5. 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 17
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 580 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    Rozcestník

    Dotaz: jak na "namespace" v C

    17.1.2005 19:56 jiri vejsada
    jak na "namespace" v C
    Přečteno: 318×
    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.