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 20:44 | Komunita

    openSUSE Leap 16, včetně Leap Micra 6.2+, nově nabízí 24 měsíců podpory pro každé vydání. To je dva roky aktualizací a stability, což z něj činí nejdéle podporovanou komunitní distribuci vůbec. Leap se tak stává ideální platformou pro všechny, kdo hledají moderní, stabilní a dlouhodobě podporovanou komunitní Linux distribuci.

    lkocman | Komentářů: 0
    dnes 16:33 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal dne 3. 9. 2025 VAROVÁNÍ před hrozbou v oblasti kybernetické bezpečnosti spočívající v předávání systémových a uživatelských dat do Čínské lidové republiky a ve vzdálené správě technických aktiv vykonávané z území Čínské lidové republiky. Varováním se musí zabývat povinné osoby podle zákona o kybernetické bezpečnosti.

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

    Americká internetová společnost Google nemusí prodat svůj prohlížeč Chrome ani operační systém Android. Rozhodl o tom soud ve Washingtonu, který tak zamítl požadavek amerického ministerstva spravedlnosti. Soud ale firmě nařídil sdílet data s jinými podniky v zájmu posílení konkurence v oblasti internetového vyhledávání. Zároveň Googlu zakázal uzavírat dohody s výrobci mobilních a dalších zařízení, které by znemožňovaly

    … více »
    Ladislav Hagara | Komentářů: 3
    dnes 11:33 | Humor

    Prvního září ozbrojení policisté zatkli na na londýnském letišti Heathrow scénáristu a režiséra Grahama Linehana, známého především komediálními seriály Ajťáci, Otec Ted nebo Black Books. Během výslechu měl 57letý Graham nebezpečně zvýšený krevní tlak až na samou hranici mrtvice a proto byl z policejní stanice převezen do nemocnice. Důvodem zatčení bylo údajné podněcování násilí v jeho 'vtipných' příspěvcích na sociální síti

    … více »
    Gréta | Komentářů: 58
    dnes 10:22 | Pozvánky

    Studentská dílna Macgyver zve na další Virtuální Bastlírnu - pravidelné online setkání všech, kdo mají blízko k bastlení, elektronice, IT, vědě a technice. Letní prázdniny jsou za námi a je čas probrat novinky, které se přes srpen nahromadily. Tentokrát jich je více než 50! Těšit se můžete mimo jiné na:

    Hardware – Bus Pirate na ESP32, reverse engineering Raspberry Pi, pseudo-ZX-80 na RISC-V, PicoCalc, organizéry na nářadí z pěny nebo … více »
    bkralik | Komentářů: 0
    dnes 03:11 | Nová verze

    Google Chrome 140 byl prohlášen za stabilní. Nejnovější stabilní verze 140.0.7339.80 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 6 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    LeoCAD (Wikipedie) je svobodná multiplatformní aplikace umožňující také na Linuxu vytvářet virtuální 3D modely z kostek lega. Vydána byla verze 25.09. Zdrojové kódy a AppImage jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 2
    včera 21:00 | IT novinky

    RubyMine, tj. IDE pro Ruby a Rails od společnosti JetBrains, je nově zdarma pro nekomerční použití.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | Nová verze

    Český LibreOffice tým vydává překlad příručky LibreOffice Calc 25.2. Calc je tabulkový procesor kancelářského balíku LibreOffice. Příručka je ke stažení na stránce dokumentace.

    ZCR | Komentářů: 2
    včera 01:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) vývojová verze 3.1.4 příští stabilní verze 3.2 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (81%)
     (8%)
     (2%)
     (3%)
     (4%)
     (1%)
    Celkem 134 hlasů
     Komentářů: 9, poslední 28.8. 11:53
    Rozcestník

    Dotaz: jak na "namespace" v C

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