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 01:22 | Nová verze

    Byla vydána verze 1.91.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

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

    Ministerstvo průmyslu a obchodu vyhlásilo druhou veřejnou soutěž v programu TWIST, který podporuje výzkum, vývoj a využití umělé inteligence v podnikání. Firmy mohou získat až 30 milionů korun na jeden projekt zaměřený na nové produkty či inovaci podnikových procesů. Návrhy projektů lze podávat od 31. října do 17. prosince 2025. Celková alokace výzvy činí 800 milionů korun.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Komunita

    Google v srpnu oznámil, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Iniciativa Keep Android Open se to snaží zvrátit. Podepsat lze otevřený dopis adresovaný Googlu nebo petici na Change.org.

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

    Byla vydána nová verze 18 integrovaného vývojového prostředí (IDE) Qt Creator. S podporou Development Containers. Podrobný přehled novinek v changelogu.

    Ladislav Hagara | Komentářů: 1
    včera 12:55 | Nová verze

    Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 2.0. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).

    Ladislav Hagara | Komentářů: 1
    včera 02:55 | Nová verze

    Google Chrome 142 byl prohlášen za stabilní. Nejnovější stabilní verze 142.0.7444.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 20 bezpečnostních chyb. Za nejvážnější z nich bylo vyplaceno 50 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 01:22 | IT novinky Ladislav Hagara | Komentářů: 0
    29.10. 17:00 | Upozornění

    Národní identitní autorita, tedy NIA ID, MeG a eOP jsou nedostupné. Na nápravě se pracuje [𝕏].

    Ladislav Hagara | Komentářů: 9
    29.10. 16:44 | IT novinky

    Americký výrobce čipů Nvidia se stal první firmou na světě, jejíž tržní hodnota dosáhla pěti bilionů USD (104,5 bilionu Kč). Nvidia stojí v čele světového trhu s čipy pro umělou inteligenci (AI) a výrazně těží z prudkého růstu zájmu o tuto technologii. Nvidia již byla první firmou, která překonala hranici čtyř bilionů USD, a to letos v červenci.

    Ladislav Hagara | Komentářů: 6
    29.10. 14:11 | Komunita

    Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).

    Ladislav Hagara | Komentářů: 2
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (48%)
     (19%)
     (19%)
     (22%)
     (17%)
     (21%)
     (16%)
     (17%)
    Celkem 286 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: C++ multiplatformová appka - preprocesor vs abstrakcia

    hermes avatar 28.9.2020 01:00 hermes | skóre: 6 | blog: Elektro | BA
    C++ multiplatformová appka - preprocesor vs abstrakcia
    Přečteno: 309×
    Dajme tomu že máme aplikáciu pre viacero platforiem.

    Jedna trieda má implemetáciu nezávislú pre každý operačný systém. Ako by ste ju začlenili do zvyšku systému?
    1. urobil by som jednu triedu a a pre každú platformu by som napísal iný ifdef.
    2. urobil by som jedno rozhranie ktoré by pre každú platformu implemetovala iná trieda. A potom by som cez IoC kontainer vložil tú správnu toriedu podľa platformy. Ostatné triedy by si cez konštruktor pýtali rozhranie... Nie triedu. Takže bolo by jednotné rozhranie ale vždy s inou implemetáciou. To či by boli jednotlivé implemetácie v statickej triede alebo niekde inde je už len implemetačný detail.
    3. iné riešenie... Napíšte aké.
    POZN: pojmom rozhranie v C++ myslím abstraktnú triedu iba s virtuálnymi public metódami bez tela.

    Řešení dotazu:


    Odpovědi

    28.9.2020 09:11 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: C++ multiplatformová appka - preprocesor vs abstrakcia
    Skôr by si mal povedať: implementácia jednej triedy závisí od operačného systému. Nie?

    Ja som to robil tak, že ifdef-mi riešim jednotlivé systémové funkcie - napr. fopen() vs _fopen(), alebo si urobím pre také funkcie a typy wrapper, ktorý je vnútri ifdef-nutý podľa platformy (napr. fopen() vs. CreateFile()). Niekedy rovnako pomenované funkcie mám v dvoch zdrojákoch a podľa platformy použijem v projekt-file ten správny (foo_win.c vs foo_lin.c).

    Záleží na tom, aké platformy to sú a v čom sa líšia. Cieľom by asi malo byť, aby sa prípadná oprava bugu nemusela robiť pre každú plaformu zvlášť, resp. aby tie miesta, kde sa to robí pre obe platformy neboli "ďaleko" od seba. Aby sa ti nestávalo, že pre jednu to opravíš a pre druhú nie.
    28.9.2020 09:33 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: C++ multiplatformová appka - preprocesor vs abstrakcia
    Jednu třídu, pro každou platformu includovat jinou sadu maker, místo funkcí volat makra.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    28.9.2020 10:52 MadCatX | skóre: 28 | blog: dev_urandom
    Rozbalit Rozbalit vše Re: C++ multiplatformová appka - preprocesor vs abstrakcia
    Definici třídy do headeru, implementaci do ".cpp" souborů s layoutem zhruba "myclass_common.cpp", "myclass_win32.cpp", "myclass_linux.cpp" apod. V makefilu nastavíš, jaká implementace se má na které platformě zkompilovat. Preprocesorové výhybky se vyplatí, pokud je (velká) většina kódu společná, jinak to začne být chaos.

    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.