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 05:00 | Nová verze

    Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Komunita

    Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.

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

    Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.

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

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.

    Ladislav Hagara | Komentářů: 0
    včera 10:55 | Nová verze

    Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).

    Ladislav Hagara | Komentářů: 0
    včera 10:11 | Komunita

    Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.

    Ladislav Hagara | Komentářů: 0
    23.11. 13:33 | Bezpečnostní upozornění

    Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 10
    23.11. 12:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 159 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.11. 22:33 | Zajímavý software

    Hru Warhammer: Vermintide 2 (ProtonDB) lze na Steamu získat zdarma napořád, když aktivaci provedete do pondělí 24. listopadu.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (22%)
     (15%)
     (23%)
     (16%)
     (17%)
    Celkem 396 hlasů
     Komentářů: 17, poslední 19.11. 21:57
    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: 415×
    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.