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í
×

    včera 22:33 | Komunita

    Ubuntu Cinnamon bude od Ubuntu 23.04 oficiální odnoží Ubuntu (návrh, schválení).

    Ladislav Hagara | Komentářů: 1
    včera 19:22 | Nová verze

    Byla vydána nová major verze 5.0 účetního softwaru GnuCash (Wikipedie). Ve formátu Flatpak je již k dispozici na Flathubu.

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

    Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Alwa's Awakening (ProtonDB).

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

    Byla vydána verze 3.28.0 2D CAD (computer-aided design) softwaru QCAD (Wikipedie). Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    včera 08:00 | IT novinky

    Změna ve vedení společnosti SUSE. Dosavadní CEO Melissa Di Donato odstoupila. Od 1. května je novým CEO Dirk-Peter van Leeuwen, bývalý Senior Vice President a General Manager ve společnosti Red Hat.

    Ladislav Hagara | Komentářů: 9
    27.3. 22:22 | Nová verze

    CyberChef je webová aplikace pro analýzu dat a jejich kódování a dekódování, šifrování a dešifrování, kompresi a dekompresi, atd. Často je využívaná při kybernetických cvičeních a CTF (Capture the Flag). Vydána byla nová major verze 10 (aktuálně 10.4.0). Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    27.3. 19:22 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch OTA-1 Focal založené na Ubuntu 20.04 Focal Fossa.

    Ladislav Hagara | Komentářů: 1
    27.3. 17:11 | IT novinky

    Společnost Red Hat slaví 30 let.

    Ladislav Hagara | Komentářů: 2
    27.3. 15:22 | IT novinky

    Ve věku 91 let zemřel izraelský informatik Ja'akov Ziv, spolutvůrce bezztrátových kompresních algoritmů LZ77, LZ78 a LZW (Lempel–Ziv–Welch).

    Ladislav Hagara | Komentářů: 0
    27.3. 11:00 | IT novinky

    Byla představena nová Arduino deska Arduino UNO R4 s 32bitovým MCU RA4M1 (Arm Cortex-M4). Desku lze zatím získat pouze v rámci early access programu.

    Ladislav Hagara | Komentářů: 0
    Používáte WSL (Windows Subsystem for Linux)?
     (73%)
     (12%)
     (4%)
     (11%)
    Celkem 358 hlasů
     Komentářů: 7, poslední včera 17:34
    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: 353×
    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.