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 16:55 | Nová verze

    Projekt openSUSE dnes, 3. listopadu 2026, oficiálně vydal openSUSE Leap 16.1, novou verzi své stabilní linuxové distribuce. Novinkou je také Immutable Mode, který nahrazuje dosavadní samostatnou distribuci openSUSE Leap Micro. Podrobnosti o novém vydání najdete v oficiálním oznámení nebo v českém překladu oznámení. Instalační obrazy jsou již dostupné na get.opensuse.org. Vydání společně oslavíme v pátek ve virtuálním baru a na … více »

    lkocman | Komentářů: 0
    dnes 16:00 | Nová verze

    Bylo oznámeno vydání Fedora Linuxu 45. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora Cloud pro cloudové nasazení, Fedora CoreOS pro ty, kteří preferují neměnné systémy a Fedora IoT pro internet věcí. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 15:44 | Zajímavý článek

    Vědci z MIT CSAIL představili koncept 'weight-space programming' a názorně předvedli, že pokročilé jazykové modely SI dokážou přímo číst a upravovat váhy neuronových sítí. Studie ukazuje, že modely nejen dokážou identifikovat účel sítí z pouhého nahlédnutí do jejich číselných vah, ale mohou i cíleně opravovat chyby a nedostatky, například GPT-6 Astra se změnou pouhých 0,016% vah open-weight modelu Qwen3.5-0.8B podařilo odstranit

    … více »
    👻 | Komentářů: 2
    dnes 14:00 | Komunita

    Organizátoři komunitního setkání nejen českých a slovenských správců sítí CSNOG 2027, které se uskuteční 20. a 21. ledna na půdě zlínské univerzity Tomáše Bati, oznámili prodloužení termínu pro zasílání abstraktů do programu akce. Zájemci se mohou hlásit prostřednictvím webu setkání do úterý 10. listopadu. Programová komise uvítá příspěvky věnované nejen správě sítí, ale také legislativě a regulaci nebo síťařským aktivitám studentů a pedagogů.

    VSladek | Komentářů: 0
    dnes 13:55 | IT novinky

    Bylo spuštěno předobjednávání zařízení Flipper One s Linuxem. Za 20 dolarů si lze koupit kupón a zajistit si tím speciální cenu 379 dolarů po spuštění kampaně na Kickstarteru.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | Nová verze

    Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 16.0. Postaven je na Firefoxu ESR 153. Vydána byla také nová verze 7.16 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. S Tor Browserem 16.0.

    Ladislav Hagara | Komentářů: 0
    dnes 04:00 | Nová verze

    FreeTube, desktopový klient pro YouTube využívající lokální API, byl vydán ve verzi 0.26.0. Toto velké opravné vydání mj. vrací částečnou podporu živých přenosů nebo přepracovává zobrazování titulků a obecně nastavení videa v přehrávači – FreeTube umožňuje např. přehrávat video s větším zrychlením.

    ʚĭɞ 🍉 | Komentářů: 1
    dnes 03:55 | Humor

    Další vlna kyberútoků zasáhla chladicí zařízení supermarketů v sedmi evropských zemích, Belgii, Lucembursku, Švédsku, Nizozemsku, Irsku, Estonsku a Finsku. Mrazáky se v některých prodejnách opět 'proměnily v trouby' a zahřály až na 50°C, což pochopitelně vedlo ke znehodnocení uskladněných potravin. Útoky navazují na podobný incident ve Francii z první poloviny října letošního roku, pachatel stále není znám.

    👻 | Komentářů: 9
    včera 17:52 | Zajímavý projekt
    WorldTUI je experimentální LLM o 360 milionech parametrů, který napodobuje terminál. Podle stisknutých kláves se snaží předpovídat změny na obrazovce a zvládá tak vyonávat rozličné příkazy, například Vim, tmux i jednoduchou hru Snake. Nejedná se o skutečný příkazový řádek, jeho 'soubory' i příkazy jsou pouze simulované a model může samozřejmě různě chybovat. WorldTUI vychází z jazykového modelu Qwen2.5-Coder-0.5B, který autor … více »
    👻 | Komentářů: 2
    včera 17:48 | Zajímavý článek
    Josef Bacik navrhuje novou abstrakci cell, která by celý kontejner reprezentovala jako jeden kernelový objekt. Proces by vznikl přímo uvnitř cell a nemohl by ji opustit. Oprávnění ke správě by se odvozovala od držení cellfd. … více »
    vencour | Komentářů: 11
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2970 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Dotaz: Redefinování makra v C++

    7.4.2013 15:58 blorg
    Redefinování makra v C++
    Přečteno: 805×
    Zdravím, na začátku definuji makro a v průběhu ho potom potřebuju redefinovat, ale tak, aby měl hodnotu nějaké proměnné:
    #define MACRO 5
    
    ...
    
    int var = 10;
    
    #undef MACRO
    #define MACRO var
    
    
    Nejsem si teda jistej, jestli to vůbec jde... Díky

    Odpovědi

    7.4.2013 16:59 lofcek
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    No ide .. preco by neslo. Len neviem, ci to robi presne to, co si predstavujete. Makra sa totiz len rozvinu na text a az ten sa potom kompiluje. Cize namiesto #define MACRO var, mozete rovno pouzivat len var a urobi to to iste.

    A zmenit hodnota makra - to sa samozrejme da, len na citatelnosti to neprida. Ono vo vseobecnosti sa odporuca vyhybat sa makram a pouzit ich len tam, kde si je clovek uplne isty, ze to musi byt.
    7.4.2013 17:16 blorg
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    No, var můžu použít ale nebudu mít úplnou jistotu.. a const var nemůžu vůbec
    7.4.2013 17:20 potato
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Ještě jednou: nejdřív se expandují makra, pak se teprve zdrojový kód kompiluje. Použití makra povede k identickému výsledku jako napsat do daného místa zdrojovéko kódu var. A to je taky ta jediná úplná jistota, kterou máš.

    Dost nejasné naopak je, jak si vlastně představuješ, že makra fungují.
    7.4.2013 17:34 blorg
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Jasně, já jsem akorát myslel že je dobré je třeba použít namísto proměnných, protože makra mohou být jakoby konstantní, dokud je zase nepředefinujeme. Konstantní proměnná nejde předefinovat vůbec.
    7.4.2013 18:06 potato
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Úplně nerozumím, proč bys měl mít ve zdrojovém textu části závisející na pojmenování proměnné a navíc ji muset předefinovávat při jedné kompilaci. Možná to chce popsat pořádněji, o co se snažíš.

    Jedna možnost je to, co píše níže Ivan. Pokud potřebuješ zakompilovat do jednoho objektu více jakýchsi variant kódu, tak použij šablony. To ale podle všeho neděláš.

    Pokud se snažíš o to, aby ti preprocesor nahradil v kódu MACRO literálem 10, když to nemáš definováno na úrovni preprocesoru, nýbrž tak pouze inicializuješ proměnou, tak tohle z principu nejde.
    7.4.2013 17:54 Ivan
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    hmm nevim ceho presne potrebujes dosahnout, ale nesly by na to pouzit sablony?

    neco jako
    template<char * context, int i>
    class Macro
    {
    enum { value = i};
    }
    
    template<<int i>
    class Macro<"kontext1">
    {
    enum { value = 10};
    }
    
    
    popripade jeste by sly pouzit namespaces.
    namespace Kontext1
    {
      enum makro { value = 10 };
    }
    namespace Kontext2
    {
      enum makro { value = 5 };
    }
    
    a pak uz jen:
    using namespace Kontext1;
    
    7.4.2013 19:33 blorg
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Vlastně jde o to, že je makro defaultně předdefinované, ale uživatel má možnost ho za běhu změnit. A na hodnotě makra potom závisí deklarování jiných proměnných - kvůli tomu ho chci použít.
    #ifdef MAKRO 5
    int a = 0;
    
    #elif MAKRO 3
    int a = 1;
    
    #endif
    
    A jediný problém je, že nevím, jak makro předefinovat, aby mělo hodnotu nějaké proměnné
    stativ avatar 7.4.2013 19:40 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Jediný problém je v tom, že to tak prostě nejde. Jak už ti tu někteří už několikrát řekli, makra se expandují ještě před kompilací, takže o proměnných neví naprosto nic.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    7.4.2013 19:42 blorg
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Takže na tohle si prostě můžu nechat zajít chuť. Zkusím to vyřešit jinak.
    8.4.2013 02:30 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Kdyz to potrebujes za behu menit tak z toho proste udelej (ne-konstantni) promennou:
    int MACRO = 5;
    
    ...
    
    MACRO = 3;
    
    12.4.2013 12:21 Nikola Pajkovský | skóre: 16
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    takle urcite ne
    Save the whales. Feed the hungry. Free the mallocs
    8.4.2013 03:00 Logik
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Zkus si najít něco o návrhovym vzoru dependency injection. Dělat todle "na globální" úrovni je "prasečina", ať už se to pokusíš vyřešit makrem (což z principu nejde) nebo globální proměnou (což by sice šlo, ale goto začátek věty :-)).
    9.4.2013 20:37 blorg
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    jenže problém je v tom, že potřebuju udělat podmínku ještě před funkcí, a to prostě jde pokud vím tak jen s makrem
    9.4.2013 22:11 kuka
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    Nepotrebujes udelat "podminku pred funkci", potrebujes resit nejaky realny problem. Vetsina jazyku zadne makro nema a problemy se tam resi. Popis co potrebujes vecne, ne technicky, udelat a jiste se najde vhodne reseni.
    12.4.2013 13:01 Nikola Pajkovský | skóre: 16
    Rozbalit Rozbalit vše Re: Redefinování makra v C++
    makra v jazyce C expanduji ve smlyslu, kde je vyskyt tokenu MAKRO, vloz obsah tela MAKRO. Makro muze byt pouzito jako pojmenovani konstany na rozumny nazev (pojmenovani bitu v bitmask), prejmenovani funkce, vytvareni funkce (dokonce umi i vracet hodntou), pro obecne generovani symbolu a pro podmineny preklad.
    
    #define MS_NOSEC        (1 << 28)
    
    static void foo(void)
    {
         printf("%d\n", MS_NOSEC);
    }
    
    preprocesor vyexpanduje vsechny makra a vlozi jejich obsah na misto jmnena makra. vysledny kod pro preklad bude vypadat takhle
    
    ...
         printf("%d\n", (1 << 28));
    ...
    
    z toho plyne i tvuj problem. #define MACRO var vyexpanduje na symbol var nebo jinimy slovy, prejmenuje symbol var na MACRO
    
    #define MACRO 1
    
    static void foo(void)
    {
         printf("%d\n", MACRO);
    
    #undef MACRO
    #define MACRO var
         printf("%d\n", MACRO);     
    }
    
    se po preprocesoru stane
    
    ...
         printf("%d\n", 1);
         printf("%d\n", var);
    ...
    
    Jedine, kdy se kod prelozi je, kdyz var bude deklarovane. V tomhle pripade to nutne musi byt promnenna. Vytvareni takoveho kodu vede pouze a jedine k chybam a necitelnosti. Timhle zpusobem to opravdu nepouzivej. A ono, predefinovani makra se opravdu deje, ale musi to mit svuj smysl. Makra jsou uzitecna, dobra, ale opatrne na ne.
    
    /*
     * max() macros that also do strict type-checking
     */
    #define max(x, y) ({                           \
           typeof(x) _max1 = (x);                  \
           typeof(y) _max2 = (y);                  \
           (void) (&_max1 == &_max2);              \
           _max1 > _max2 ? _max1 : _max2; })
    
    
    #define gen_localtime(name)                           \
            static inline int localtime_##name(time_t *t) \
            {                                             \
                    struct tm *lt = localtime(t);         \
                    if (!lt)                              \
                            die_errno("localtime");       \
                                                          \
                    return lt->tm_##name;                 \
            }
    
    gen_localtime(mday);
    
    Save the whales. Feed the hungry. Free the mallocs

    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.