abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

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

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 8
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    17.4. 17:55 | IT novinky

    Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.

    Ladislav Hagara | Komentářů: 3
    17.4. 17:44 | IT novinky

    Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).

    Ladislav Hagara | Komentářů: 1
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (20%)
    Celkem 557 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Jak přiřadit statické pole v gcc?

    21.2.2008 11:57 dustin | skóre: 63 | blog: dustin
    Jak přiřadit statické pole v gcc?
    Přečteno: 357×
    Zdravím, při úpravě jaderného modulu alsy jsem narazil na problém s přiřazením statického pole.

    Původní kód obsahuje statické pole stringů vzorkovacích frekvencí definované ve funkci, která využívá jednotlivé položky tohoto pole.
    static const char * const texts_1724[] = {
    		"8000",		/* 0: 6 */
    		...................
    		"192000",	/* 14: 14 */
    		"IEC958 Input",	/* 15: -- */
    	};
    
    Protože některé karty podporují jen některé z těchto frekvencí, potřebuji kód zobecnit, aby se nepracovalo rovnou s tímto statickým polem, ale s polem příslušným dané kartě.

    Tedy jsem definici tohoto pole přesunul z funkce na hlavní úroveň, do struktury karty přidal novou položku a v inicializaci struktury se snažím jí toto pole přiřadit.
    struct snd_ice1712 {
    ............
    	struct ice1712_rates_info {
    		....
    		char * * texts;			/* list of rate strings */
    	} rates_info;
    }
    
    Přiřazení v inicializaci provádím
    ice->rates_info.texts = texts_1724;
    Bohužel toto hodí při kompilaci warning: assignment from incompatible pointer type. Zkoušel sem všechny možné varianty definice položky texts, různě odstraňovat consty u definice statického pole, ale nedokázal jsem warning (někdy rovnou error) odstranit. Má znalost C pro gcc je poměrně chatrná. Velice děkuji za radu či doporučení.

    Odpovědi

    21.2.2008 12:05 Martin
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    puvodni denlarace je const char * const texts_1724[] konstantni ukazatel na konstanti pole
    Vy pouzivate nekonstantni ukazatel na nekonstantni string char **texts. Neni ta hlaska zpusobena prave tim?
    21.2.2008 12:19 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Zkoušel jsem:

    const char * texts[]; vede na error: invalid use of flexible array member char * texts[]; vede na error: invalid use of flexible array member

    const char ** texts; vede na warning: assignment discards qualifiers from pointer target type
    21.2.2008 12:35 mity | skóre: 6 | Praha
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Promenna texts_1724 je konstantni pole konstantnich stringu. (vsimnete si dvojnasobneho vyskytu slova "const").

    Musite tedy deklarovat konstantni pointer na konstantni string:

    static const char * const texts_1724[] = { "8000", /* 0: 6 */ ................... "192000", /* 14: 14 */ "IEC958 Input", /* 15: -- */ };

    static const char* const* ptr; /* <-- !!! */

    static void my_func(void) { ... ptr = texts_1724; ... }
    21.2.2008 13:09 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Děkuji. Ta proměnná text je položkou structu, kde static nezafungoval (error: expected specifier-qualifier-list before 'static'). Nicméně řešení

    const char* const* texts;

    skouslo gcc bez připomínek. Ještě jednou všem děkuji.
    21.2.2008 14:33 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Já bych doporučil používat typedef. Žonglování s hvězdičkami je spíš pro vztek.
    21.2.2008 14:38 R
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    typedef sa nema pouzivat v driveroch.
    21.2.2008 14:52 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Proč?
    Užívej dne – možná je tvůj poslední.
    21.2.2008 15:02 R
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Documentation/CodingStyle
    21.2.2008 14:55 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak přiřadit statické pole v gcc?
    Děkuji za doporučení. Přeci jenom jde o úpravu stávajícího kódu a nechci dělat více změn, než je nutné.

    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.