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:44 | IT novinky

    Skriptovací programovací jazyk PHP (PHP: Hypertext Preprocessor, původně Personal Home Page) dnes slaví 30 let. Přesně před třiceti lety, 8. června 1995, oznámil Rasmus Lerdorf vydání PHP Tools (Personal Home Page Tools) verze 1.0.

    Ladislav Hagara | Komentářů: 0
    7.6. 23:55 | Humor

    Ve středu v 17:00 byl ve Francii zablokován přístup k PornHubu a dalším webům pro dospělé. K 17:30 došlo k nárůstu počtu registrací Proton VPN o 1 000 % [𝕏]. Dle nového francouzského zákona jsou provozovatelé těchto webů povinni ověřovat věk uživatelů prostřednictvím průkazu totožnosti nebo platební karty.

    Ladislav Hagara | Komentářů: 25
    6.6. 19:44 | Zajímavý článek

    Před 32 lety, 6. června 1993, byl spuštěn první český WWW server (ještě pod TLD .cs), pro potřeby fyziků zabývajících se problematikou vysokých energií.

    Ladislav Hagara | Komentářů: 5
    6.6. 16:11 | Zajímavý software

    Střílečku Borderlands 2 lze v rámci výprodeje série Borderlands na Steamu získat zdarma napořád, když aktivaci provedete do 8. června 19:00.

    Ladislav Hagara | Komentářů: 11
    6.6. 15:11 | Nová verze

    Byla vydána nová verze 2.22 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    5.6. 15:00 | Komunita

    Canonical Launchpad vypíná systém správy verzí Bazaar. Vývojáři mohou své repozitáře do 1. září přemigrovat na Git.

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

    Byla vydána nová verze 2.53.21 svobodného multiplatformního balíku internetových aplikací SeaMonkey (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 3
    5.6. 12:33 | Komunita Ladislav Hagara | Komentářů: 25
    5.6. 11:22 | Komunita

    Na Indiegogo byla spuštěna kampaň na podporu linuxového telefonu Liberux NEXX s osmijádrovým procesorem Rockchip RK3588S, 32 GB LPDDR4x RAM a 6.34″ 2400×1080 OLED displejem. Cena telefonu je 1 310 eur.

    Ladislav Hagara | Komentářů: 5
    5.6. 11:11 | Komunita

    Miro Hrončok vyhrál volby do Fedora Council. Mezi sedmi kandidáty, kteří se ucházeli o dvě křesla, nakonec získal nejvíce hlasů - 1089. Česká komunita má tak po delší době opět zástupce v nejvyšším orgánu Fedory.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (54%)
     (33%)
     (8%)
     (2%)
     (0%)
     (0%)
     (3%)
    Celkem 226 hlasů
     Komentářů: 16, poslední včera 21:05
    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: 301×
    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: 45 | 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.