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 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ářů: 1
    dnes 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ářů: 1
    dnes 16:23 | Bezpečnostní upozornění

    Zranitelnost v aktualizačním mechanismu WordPress umožňuje útočníkovi zasáhnout do dočasného instalačního adresáře během aktualizace jádra systému. Před aktualizací veřejně dostupného WordPressu dočasně zablokovat HTTP přístup k wp-content/upgrade/, následně aktualizovat a zkontrolovat logy. Postižené verze: WordPress 4.7 až 7.1.3.

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

    Alpine Linux zveřejnil podrobnosti o útoku na svůj GitLab a 30. října oznámil obnovení provozu. Útočník se 20.–21. října pokusil zneužít chybu v regulárních výrazech. Exploit způsobil opakované pády workerů a několikrát se dostal do pokročilé fáze. Úspěšné spuštění kódu však nebylo potvrzeno. Fix: Opravený GitLab a současně Ruby 3.3.13, 3.4.12 nebo 4.0.9+, pokud jde o vlastní sestavení či kontejner.

    vencour | Komentářů: 0
    dnes 15:44 | Pozvánky

    Konference OpenAlt 2026 proběhne tento víkend 7. a 8. listopadu na FIT VUT v Brně. Jedná se již o 21. ročník této konference, která propojuje otevřené technologie, svobodný software, hardware a lidi, kteří chtějí věci nejen používat, ale také jim rozumět a měnit je k lepšímu. Více o konferenci v příspěvku OpenAlt 2026: technologie, které dávají svobodu na blogu spolku OpenAlt.

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

    Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 16 GB varianty Raspberry Pi o 80 dolarů a 16 GB varianty Raspberry Pi Compute Module 5 o 40 dolarů. Cena Raspberry Pi 500+ se nemění.

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

    Francouzské Národní shromáždění přijalo 30. října 2026 poměrem 11 hlasů pro, 10 proti a 14 abstencí pozměňovací návrh I-1358 ke státnímu rozpočtu na rok 2027, který zavádí daň z objemu dat doručovaných uživatelům internetu. Návrh socialistického poslance Laurenta Lhardita stanovuje sazbu 0,055 eura za gigabajt, tedy 55 eur za terabajt. Zatím nejde o platný zákon, ale o dílčí hlasování během prvního čtení rozpočtu. Daň by měli platit

    … více »
    vencour | Komentářů: 9
    včera 12:44 | IT novinky

    Nizozemská vláda ve snaze šetřit a zvyšovat efektivitu s využitím umělé inteligence (AI) hodlá zrušit asi 25.000 pracovních míst ve státní správě. Cílem je postupně dosáhnout ročních úspor až 3,5 miliardy eur (85,2 miliardy Kč). Na konci loňského roku ve státní správě pracovalo rekordních 160.000 lidí. „Nemůžeme pokračovat v tom, co jsme dělali dosud,“ uvedl státní tajemník pro efektivní fungování vlády Eric van den Burg. „Proto

    … více »
    Ladislav Hagara | Komentářů: 37
    včera 12:00 | IT novinky

    Příspěvek na blogu PRUSA 3D představuje fotoaparát CAIM1 (Counter Artificial Intelligence Machine 1). Uměle vytvořený obsah je každým dnem těžší rozeznat od skutečných záběrů či fotografií, což podrývá důvěryhodnost žurnalistiky, archivních materiálů i každodenní tvorby obsahu. Fotoaparát CAIM1 byl vyvinut právě k tomu, aby ověřoval původ fotografií a videí přímo během jejich pořizování. Uvnitř fotoaparátu se nachází hardwarová Web3 peněženka se zabezpečovacím čipem Tropic Square TROPIC01.

    Ladislav Hagara | Komentářů: 8
    včera 00:11 | Nová verze

    Jonathan Thomas oznámil vydání nové verze 4.1 video editoru OpenShot (Wikipedie). Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2966 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Dotaz: C makro na spocitani delky retezce

    21.4.2010 18:33 jirik
    C makro na spocitani delky retezce
    Přečteno: 880×
    Dobry den,

    rad bych se zeptal jestli jde v C nebo C++ napsat makro, kde by preprocesor spocital delku const char* retezce a vratil cislo.

    Samozrejme nemam na mysli neco takoveho #define len(str) strlen(str)

    Jde mi jen o to abych nemusel rucne doplnovat delky retezcu do kodu.

    Dekuji za odpoved.

    Řešení dotazu:


    Odpovědi

    21.4.2010 19:15 Sten
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    V C++ to jde udělat přes šablony, protože ve skutečnosti je to const char[délka].

    O existenci makra ale pochybuji.
    Řešení 1× (jirik (tazatel))
    21.4.2010 19:17 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce

    Nejde. Ale muzete to udelat bud pomoci sizeof, nebo sablon.

    #include <iostream>
    #include <cstddef>
    
    template<std::size_t N_>
    std::size_t length(const char (&s)[N_])
    {
            return N_;
    }
    
    int main(int argc, char** argv)
    {
            const char str[] = "Hello World!";
    
            std::cout << sizeof(str) << ", " << length(str) << "\n";
            std::cout << sizeof("Hello World!") << ", " << length("Hello World!") << "\n";
    
            return 0;
    }

    (Pozn.: oba dva zpusoby vraceji delku retezce vcetne ukoncovaciho null, tzn. o jednicku vetsi, nez co dava strlen().)

    21.4.2010 19:41 jirik
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    Dekuji za odpoved.

    Sablony pouzivat nechci ale ten sizeof je super. Ten me vazne nenapadl.
    21.4.2010 21:36 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    pozor, sizeof vrati spravne velikost jenom pokud je promena deklarovana jako pole, ne pokud je to ukazatel:
    #include <iostream>
    
    int main()
    {
            char const *x = "Hello world!";
            
            std::cout << x << ", " << sizeof(x) << "\n";
    }
    
    vypise velikost ukazatele, ne delku retezce!
    22.4.2010 11:35 lukas
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    Tvoj kod nie je najlepsi, pretoze sa spolieha na velkost typu char 8 bitov. Prenositelna verzia:
       ...
       const char str[] = "Hello World!";
       std::cout << sizeof(str)/sizeof(*str) << ", " << length(str) << "\n";
       ...
    
    22.4.2010 11:49 FooBar
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    Omlouvam se, ale nemuzu nezareagovat. Tohle je pitomost. C standard absolutne a nedvojznacne urcuje, ze char ma velikost 1B. Jeho kod je prenositelny vzdy a vsude.

    Samozrejme, do budoucna je to spravna praktika, ponevadz si clovek zvykne na to, ze nemuze definitivne predvidat velikost datovejch typu, nicmene v tomhle pripade je jeho kod zcela bez vyhrad na prenositelnost nebo cokoliv jinyho korektni.

    (A pokud pises na exotickou platformu, ktera ma 1B velkej treba 9 bitu, tak te to furt netrapi, ponevadz sizeof pocita s byty a ne bity)
    22.4.2010 10:31 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    A proc nepouzit strlen? Pokud to prekladas rozumnym prekladacem s dostatecnou optimalizaci, tak se to vyoptimalizuje samo :-) pr.:
    
    $ cat ll.c 
    #include <string.h>
    
    #define  STRLEN(x)      strlen(x)
    
    int main() {
            return STRLEN("rozedeleny retezec" "neurcite delky");
    }
    $ ~/src/llvm/Debug/bin/clang -O2 -S ll.c -o -
            .file   "ll.c"
            .text
            .globl  main
            .align  16, 0x90
            .type   main,@function
    main:
            pushl   %ebp
            movl    %esp, %ebp
            movl    $32, %eax
            popl    %ebp
            ret
    .Ltmp0:
            .size   main, .Ltmp0-main
    
    
            .section        .note.GNU-stack,"",@progbits
    $ gcc -O2 -S ll.c -o -
            .file   "ll.c"
            .text
            .p2align 4,,15
    .globl main
            .type   main, @function
    main:
            leal    4(%esp), %ecx
            andl    $-16, %esp
            pushl   -4(%ecx)
            movl    $32, %eax
            pushl   %ebp
            movl    %esp, %ebp
            pushl   %ecx
            popl    %ecx
            popl    %ebp
            leal    -4(%ecx), %esp
            ret
            .size   main, .-main
            .ident  "GCC: (GNU) 4.3.2 20081105 (Red Hat 4.3.2-7)"
            .section        .note.GNU-stack,"",@progbits
    
    Pro ty co nemaji radi assembler - nikde se nevola funkce strlen, ale rovnou se vrati konstanta 32 (delka retezce) v instrukci
    movl $32, %eax
    24.4.2010 02:17 Nikola Pajkovský | skóre: 16
    Rozbalit Rozbalit vše Re: C makro na spocitani delky retezce
    :)
    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.