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 11:30 | Komunita

Etherpad (Wikipedie), svobodný online webový textový editor umožnující spolupráci v reálném čase, se stal oficiálním projektem organizace Software Freedom Conservancy (Wikipedie). Vývojáři Etherpadu se tak mohou stejně jako vývojáři dalších projektů soustředit pouze na vývoj softwaru a vše kolem zařídí Software Freedom Conservancy. Spuštěna byla instance Etherpadu pad.sfconservancy.org.

Ladislav Hagara | Komentářů: 1
dnes 10:40 | Zajímavý článek

Lukáš Růžička se v článku Workrave ve Fedoře aneb jak si nevytunelovat karpál na MojeFedora.cz věnuje aplikaci Workrave (Wikipedie) na sledování času stráveného na počítači, která může pomoci vyhnout se negativním účinkům práce s počítačem (RSI, CTS), nebo je alespoň výrazně zmírnit.

Ladislav Hagara | Komentářů: 1
dnes 10:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Shadow Warrior: Special Edition běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

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

Byla vydána verze 2.4.0 analyzátoru síťového provozu Wireshark. Jedná se o první stabilní verzi nové řady 2.4. Podrobný přehled novinek v poznámkách k vydání. V červnu proběhla konference SharkFest’17 US věnovaná Wiresharku. Záznamy přednášek jsou k dispozici na YouTube.

Ladislav Hagara | Komentářů: 0
včera 13:11 | Pozvánky

Spolek OpenAlt zve příznivce otevřeného přístupu na 142. brněnský sraz, který proběhne v pátek 21. července od 18:00 hodin ve Sport Centru Srbská (Srbská 4). Od 19:00 je pro zájemce zamluveno hřiště na plážový volejbal.

Ladislav Hagara | Komentářů: 0
včera 12:34 | Bezpečnostní upozornění

V GNOME Soubory, původně Nautilus, konkrétně v generování náhledů exe, msi, dll a lnk souborů byla nalezena a opravena bezpečnostní chyba CVE-2017-11421 s názvem Bad Taste. Při otevření složky obsahující tyto soubory může být spuštěn VBScript obsažen v názvech těchto souborů.

Ladislav Hagara | Komentářů: 2
včera 11:00 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 308 bezpečnostních chyb. V Oracle Java SE je například opraveno 32 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 28 z nich. V Oracle MySQL je opraveno 30 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 9 z nich.

Ladislav Hagara | Komentářů: 0
včera 01:00 | Komunita

Mark Krenz, známý svým twitterovým účtem @climagic (Command Line Magic), kde ukazuje, co vše a jak lze dělat v příkazovém řádku, přednášel včera v Praze. Záznam přednášky je k dispozici na YouTube.

Ladislav Hagara | Komentářů: 1
19.7. 10:00 | Nová verze

Microsoft vydal Skype pro Linux ve verzi 5.4 Beta. Nejnovější Skype pro Linux je postaven na frameworku Electron 1.7.4 a přináší skupinové videohovory.

Ladislav Hagara | Komentářů: 11
19.7. 06:00 | Nová verze

Werner Koch, zakladatel a hlavní vývojář GnuPG, oznámil vydání verze 1.8.0 svobodné kryptografické knihovny Libgcrypt. Jedná se o první stabilní verzi nové řady 1.8. Ta je API i ABI kompatibilní s řadou 1.7. Z novinek vývojáři zdůrazňují podporu kryptografických hašovacích funkcí Blake2 (Wikpedie), šifrovací mód XTS nebo zvýšení výkonu na architektuře ARM.

Ladislav Hagara | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (7%)
 (31%)
 (1%)
 (10%)
 (43%)
 (8%)
Celkem 1030 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    Dotaz: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    4.6.2009 10:39 Dušan Renát | skóre: 4
    Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Přečteno: 827×
    Mám program (který využívá několik knihoven - SDL, SDL_ttf, SDL_gfx, ale v tom nejspíš problém nebude), který jsem úspěšně zkompiloval a spustil na svém i na jednom cizím Linuxu. Při pokusu o zkompilování pod Windows (MinGW nejnovější verze, program mingw32-make, který volá g++) mi to zahlásí chybu, které jednak nerozumím, jednak jsem nic chytrého nenašel nikde na internetu:
    C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/cwchar:161:
    error: `::swprintf' has not been declared
    C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/cwchar:168:
    error: `::vswprintf' has not been declared
    mingw32-make: *** [main.o] Error 1
    Co se programu týče, háže to na řádku, kde includuju knihovnu iostream. Ví někdo, co to znamená a jak to vyřešit? Budu vděčný za každou pomoc.

    Odpovědi

    4.6.2009 11:10 potejo
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Ve windows verzi gcc neni podpora pro siroke znaky, neni to naimplementovane, stalo se me totez, kdyz jsem pouzival prepinac -std=c++98. Kdyz sem ho nahradil -std=gnu++98, tak preklad prosel.

    4.6.2009 11:19 Dušan Renát | skóre: 4
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Široké znaky? Myslíš jako víc než osmibitový kódování? UTF a tak?
    4.6.2009 11:25 potejo
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Podpora pro typ wchar_t viz http://www.mingw.org/category/wiki/wchar_t

    4.6.2009 12:16 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Zakladni problem je v tom ze Windows pouziva v rozporu se standardem variabilni kodovani (UTF-16). V principu to znamena reimplementovat nanovo uplne vsechny funkce ktere delaji wchar_t.

    Je nejaky zasadni problem proc to nekompilujes MSVC? MSVC je sice hrozny kompilator, ale pokud mas standardni kod, tak to vetsinou sezere.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.6.2009 13:43 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    V rozporu s jakym standardem? Nic neni potreba reimplementovat.

    MSVC byl a je prinejmensim slusny kompilator.

    Ac linuxak, tak na vareni z vody moc nejsem.

    4.6.2009 14:17 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Standard vyzaduje platnost: jeden wchar_t = jeden znak

    Veskere funkce z GCC tohle celkem logicky predpokladaji.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.6.2009 15:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Ale tenhle "problém" máte v Linuxu také - UTF-8 je také kódování s proměnnou délkou znaku, dokonce natolik, že se s tím potkáte i u běžných řetězců (UTF-16 si dokonce řada windowsáků plete s UCS-2 a tvrdí že má pevnou délku znaku). Proto existují ty knihovní funkce pro převod mezi multibyte (UTF-8) a widechar (UCS-4) reprezentací, počítá se, že navenek budete používat multibyte (UTF-8) a interně widechar (UCS-4). Na Windows by tedy mělo stačit místo UTF-8 jako multibyte reprezentaci používat UTF-16 a nebylo by potřeba nic měnit. Pokud ovšem nějaká dutá hlava vymyslela, že wchar_t bude šestnáctibitový, tak to je samozřejmě problém.
    4.6.2009 16:01 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Ano, jak uz jsem napsal wchar_t je pod Windows 16bit s kodovanim UTF-16 (WinXP a novejsi) nebo UCS-2 (Windows 2000 a starsi). Pod Linuxem je wchar_t 32bit s kodovanim UTF-32.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.6.2009 19:00 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    wchar_t je pod Windows 16bit s kodovanim UTF-16 (WinXP a novejsi)

    Tak za něco takového by autoři opravdu zasloužili pár facek.

    Pod Linuxem je wchar_t 32bit s kodovanim UTF-32.

    Spíš bych řekl UCS-4, i když z praktického hlediska to vyjde nastejno.

    4.6.2009 21:13 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Wiki: "Accordingly UCS-4 and UTF-32 are now identical except that the UTF-32 standard has additional Unicode semantics."
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.6.2009 23:12 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Ano, wchar_t je díky windows totálně nepřenositelný typ, stejně jako třeba long. Ale podle mého je UTF8 co se týče zpracování mnohem horší a pomalejší a je mi celkem líto toho, že se v linuxu tak uchytil:(
    4.6.2009 23:16 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    UTF-8 se uchytil vsude protoze to je optimalni typ pro ukladani Unicode textu. UTF-32 je optimalni datovy typ pro praci s Unicode texty.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 00:04 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Důležitá je praxe. Java, .NET a Qt používají UTF-16, v gtk se používá hodně UTF-8.

    Mi šlo ale o to, že wchar_t je podle mě nepřenositelný typ.
    5.6.2009 01:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Typ wchar_t nikdy nebyl zamýšlen jako přenositelný typ, ale zásadně jako typ pro interní práci s textem. Chtějí se od něj v podstatě jen dvě základní vlastnosti: aby umožnil reprezentovat všechny potřebné znaky a aby umožnil kódování s pevnou délkou znaku a tím i jednodušší (interní) zpracování textu. "Unixový" 32-bitový wchar_t obě tyto vlastnosti splňuje velmi dobře, při použití 16-bitového ale už z principu musíte jednu obětovat (to odpovídá výše zmíněné volbě mezi UCS-2 a UTF-16).
    5.6.2009 01:56 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    My si nerozumíme. Co myslíte pod pojmem přenositelný? Já jsem myslel, že je tu diskuze o programování, takže onou přenositelností jsem myslel psaní přenositelných aplikací, které budou využívat wchar. A to podle mě nejde, protože pod Windows nemáte právě tu jistotu, o které mluvíte.

    Já osobně to řeším používáním 32bitových řetězců (všude), ale i mé řešení může jít někomu proti srsti:-)
    5.6.2009 09:20 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Já jsem myslel, že je tu diskuze o programování, takže onou přenositelností jsem myslel psaní přenositelných aplikací, které budou využívat wchar. A to podle mě nejde, protože pod Windows nemáte právě tu jistotu, o které mluvíte.

    Pokud nepřenositelností rozumíte to, že to nebude fungovat na překladačích (s knihovnami), které sice implementují funkce definované standardem ISO C99, ale implementují je v rozporu s tímto standardem, pak máte pravdu. Ale to není speciální vlastnost widechar stringů, to potom platí pro jakýkoli prvek jazyka.

    5.6.2009 12:39 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Né nebude fungovat, ale chovat se jinak ;-)
    5.6.2009 01:17 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Horší než UTF-16? To ani náhodou, abyste vymyslel nepraktičtější typ, to byste se musel hodně snažit… Navíc, jak už podotkl kolega, UTF-8 není určen pro zpracování textu, ale pro jeho ukládání.
    5.6.2009 01:51 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    V čem je tedy UTF-8 lepší?

    Jasně, UTF-16 má úplně stejné neduhy, jako UTF-8, ale z hlediska zpracování se jedná o tu lepší variantu. Surrogate pair existuje jen jeden a pokud se jedná uložení takového textu v paměti, tak se jedná o celkem dobrou volbu (ono tomu i nasvědčuje to široké použití).

    Pokud mluvíme o ukládání textu ve smyslu uložení na HDD, je i UTF-8 můj favorit, ale já jsem mluvil v kontextu uložení textu v paměti aplikace (RAM) a s takovým textem obvykle pracujeme, ne?
    5.6.2009 01:57 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Ano UTF-16 je uzasny kompromis. Neni to ani velke ani male, neni to ani rychle ani pomale. Odporuje to standardu (ale jelikoz se vetsinou vlezeme do spodnich 16bit, tak nam to jiste vsichni odpusti).

    UTF-32 je urcen pro interni praci s Unicode texty. Cokoliv co opousti aplikaci (at uz libovolnym zpusobem - sit, disk, etc...) by melo byt UTF-8.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 02:02 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Nevím, proč to tak hrotíte, se chováte, jako by vám snad UTF-16 nějak ublížilo:)

    Já nevím, vy tady pořád hlásáte standardy, ale realita je jiná. Pro vás tedy zopakuji ještě jednou, bavím se o reprezentaci řetězců v paměti, nikdy bych se nebavil o wchar v kontextu ukládání textu mimo aplikaci.
    5.6.2009 02:49 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Uz zacina byt jasno, bez urazky, ale Ty vubec netusis, ktera bije :)
    5.6.2009 09:37 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Co místo těch urážek zkusit nějaký argument?
    5.6.2009 20:10 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Nemyslel jsem to tak, jak to nejspíš vyznívá. Omlouvám se.
    5.6.2009 09:17 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    V čem je tedy UTF-8 lepší?

    Je přímým rozšířením sedmibitové ASCII (může se to hodit např. u webů, jejichž autoři z nějakých důvodů pro informaci o kódování místo hlavičky odpovědi používají berličku v podobě http-equiv meta elementu). Odpadá u něj problém s endianitou, takže není potřeba prznit textové soubory BOM nebo rozlišovat dvě varianty kódování. Je úspornější. Naopak nepřináší oproti UTF-16 žádné nevýhody: zpracováváte-li text v UTF-16, stejně musíte počítat s proměnnou délkou znaku se všemi důsledky (pokud to neděláte jako ta část windowsových programátorů, kteří používají UCS-2 a říkají mu UTF-16).

    Pokud mluvíme o ukládání textu ve smyslu uložení na HDD, je i UTF-8 můj favorit, ale já jsem mluvil v kontextu uložení textu v paměti aplikace (RAM) a s takovým textem obvykle pracujeme, ne?

    Co se týká zpracování, pak pro jednodušší operace to lze nechat v UTF-8 (převodem do UTF-16 nic nezískáte), pro složitější preferuji typ wchar_t a funkce pro práci s ním tak, jak je definuje ISO C99. Což v podstatě znamená UCS-4 (případně máme-li jistotu, že to bude stačit, lze uvažovat i o UCS-2).

    Podstatou celé debaty je ale skutečnost, že pokud autoři MSVC dnes, v roce 2009, pořád ještě nejsou schopni (nebo ochotni) korektně implementovat práci s widechar stringy podle ISO C99, je to trestuhodné. Bohužel v případě MS je takový přístup spíš pravidlem než výjimkou.

    5.6.2009 02:43 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Standard vyzaduje platnost: jeden wchar_t = jeden znak

    Ktery standard? V C99 to zhruba takhle je, ale takhle to tam nestoji. Necham se presvecit konkretnim prikladem se zduvodnenim.

    Veskere funkce z GCC tohle celkem logicky predpokladaji.

    GCC je to povetsinou jedno a tam kde neni, tam by se mel drzet v mantinelech standardu. V tom neni problem (jak se to vezme, k tomu nejspis dojdeme).

    5.6.2009 09:35 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Co třeba sekce 7.17?

    wchar_t
    which is an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales; the null character shall have the code value zero.

    Nebo 7.1.1:

    1 … The term multibyte string is sometimes used instead to emphasize special processing given to multibyte characters contained in the string or to avoid confusion with a wide string. …

    A wide string is a contiguous sequence of wide characters terminated by and including the first null wide character. A pointer to a wide string is a pointer to its initial (lowest addressed) wide character. The length of a wide string is the number of wide characters preceding the null wide character and the value of a wide string is the sequence of code values of the contained wide characters, in order.

    5.6.2009 16:58 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    which is an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales

    Ano, jak jsem napsal - V C99 to zhruba takhle je, ale takhle to tam nestoji. Proto bych rad konkretni priklad dokazujici ten rozpor se standardem. Rad se necham presvedcit.
    5.6.2009 18:17 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    A ne tedy jen v C99, v C++ taky.
    5.6.2009 19:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Podle mne je ten rozpor zcela zřetelný: implementace ve Windows se tváří, že podporuje i jiné locales než ta, která vystačí s tou částí Unicode, kterou lze v UTF-16 zapsat dvěma byty. K čemu by podle vás bylo implementovat widestringy způsobem, který by si ponechal všechny špatné vlastnosti multibyte stringů a jen přidal pár dalších?
    5.6.2009 20:31 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Zpětná kompatibilita. Ve Windows už si prostě nemůžou říct, že by byl lepší 32 bit wide string.
    6.6.2009 11:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    To je právě ten průšvih. Teoreticky by program měl být psán tak, aby mu nevadilo, pokud by tvůrce kompilátoru v náhlém zatmění mysli zadefinoval wchar_t třeba jako 64-bitový. Ale teorie a praxe se často dost liší… Holt si asi musíme zvyknout, že programátoři na Windows teprve teď se zpožděním nějakých čtyř let prožívají rozšiřování obzorů související s přechodem na 64-bitovou platformu. Snad se jim časem rozšíří natolik, že budou schopni vstřebat i širší široké znaky. :-)
    5.6.2009 21:46 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Uz to chapu. Veril jsem v kompaktni ulozeni omezeneho vyberu znaku, ale to Windows nedelaji. Jsem zase o kousek chyrejsi :)
    5.6.2009 13:50 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    GCC je to povetsinou jedno a tam kde neni, tam by se mel drzet v mantinelech standardu. V tom neni problem (jak se to vezme, k tomu nejspis dojdeme).
    Coze? Jak ti proboha muze byt u wide retezcu jedno jestli pouzivaji variabilni nebo fixni kodovani?
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 17:58 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Mluvil jsem o prekladaci. Vetsinu casu je to pro nej jen anonymni kousek pameti a v ostatnich pripadech by mel s obsahem pracovat, tak jak mu dovoluje standard.

    Pokud jde o me, tak je mi opravdu jedno v jakem kodovani je wchar_t. Tedy, nekteremu bych jiste dal prednost, ale protoze je to zkratka vec specificka pro prekladac, tak konkretni kodovani nepredpokladam a tam, kde ho potrebuju, pouziju k tomu urcene konverzni funkce.

    Nekompatibilita tady je a standard ji v jistych mezich dovoluje. Pokud existuje dukaz tveho tvrzeni, ze Windows v tomto ohledu ten standard porusuji, tak bych ho rad videl.
    5.6.2009 18:10 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Ty mas nejakou nervovou poruchu? Na muj prispevek, ze veskere funkce pro praci s wide retezci je pro kompatibilitu s Windows (diky tomu ze ve Windows neplati jeden znak = jeden wchar_t) nutne prepsat zareagujes tim, ze nic prepisovat neni nutne a ted zase reagujes naprosto mimo to o cem se tady bavime.

    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 19:51 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Mas pravdu, tu cast jsem opravdu pochopil jinak, nez jsi ji myslel. Ale tu vubec neresim, predevsim jsem se ptal s jakym standardem jsou v tomto ohledu ty Windows v rozporu.

    Na to jsi prisel s rovnici a ja se pidil po tom, ktery standard toto vyzaduje, jestli vyzaduje presne toto, jak se to tyka toho porusovani a po prikladu, ktery potvrdi jeho porusovani na strane Windows. Zminku o GCC jsem uzavrel s tim, ze v nem neni problem. Prekladac sam o sobe je OK, interoperabilitu, reimplementaci cehokoliv neresim, patram jen po tom porusovani standardu.

    Citujes to, co jsem napsal k GCC, tak vysvetluju, ze jsem myslel opravdu jen holy prekladac, odpovidam na dotaz o mem vztahu ke kodovani a dale se snazim jasne vymezit, na co se to vlastne ptam - co a jak je porusovano.

    Dekuji za optani, nervovou poruchu nemam, neodbocuju a stale se ptam na jedinou vec, ale asi se spatne vyjadruju (casto). Ted uz by snad melo byt jasno. Cili - jaky standard a jak porusuji Windows (resp. prekladac pouzity k jejich buildu) svou implementaci wchar_t ? Z toho, co vim, si totiz toto nemyslim a prosil bych tedy o konkretni priklad a zduvodneni. Diky.
    5.6.2009 20:26 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Achjo, ale vzdyt tohle uz napsal nekdo nade mnou. Kdyz uz nic, tohle ve windows neplati:
    A wide string is a contiguous sequence of wide characters terminated by and including the first null wide character. A pointer to a wide string is a pointer to its initial (lowest addressed) wide character. The length of a wide string is the number of wide characters preceding the null wide character and the value of a wide string is the sequence of code values of the contained wide characters, in order.
    Je jedno kterym smerem se na to divas. Budto neplati ze string je sekvence wide characters, nebo neplati to ze delka je jejich pocet.

    Take porusuje pozadavek na to ze wchar_t ma byt schopen pojmout vsechny znaky vsech locale dostupnych na danem systemu.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 20:30 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Aby opet nedoslo k nedorozumeni tak:
    wide character
    bit representation that fits in an object of type wchar_t, capable of representing any character in the current locale
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.6.2009 21:35 luky
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Asi uz to chapu. Takze se to do tech dvou bytu proste nevejde. Myslel jsem si, ze by to mohlo byt ve stylu DBCS. Mohl jsem opak tusit uz ze zminky o UTF-16, ale to se pouziva(lo) tak nejak divoce.

    Tak dik a sorry, ze jsem tak dlouho prudil :)
    4.6.2009 20:08 rastos | skóre: 60 | blog: rastos
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    MSVC je sice hrozny kompilator, ale pokud mas standardni kod, tak to vetsinou sezere.

    To preto mám v projekte:
    #if defined(WIN32)
    #define recv(s,b,l,f) recv(s,(char *)b,l,f)
    #define setsockopt(s,l,o,v,n) setsockopt(s, l, o,(char *)v, n)
    #define getsockopt(s,l,o,v,n) getsockopt(s, l, o,(char *)v, n)
    #define strcasecmp _stricmp
    #define strncasecmp _strnicmp
    #define vsnprintf _vsnprintf
    #define snprintf _snprintf
    #define assert(b) _ASSERT(b)
    #define u_int32_t     DWORD
    #define u_int16_t     WORD
    #define u_int64_t     unsigned __int64
    #define inline __inline
    #endif
    Plus formátovacie pole pre printf a 64-bitový integer, ne-posix-ové thready, chýbajúce geteuid/getegid, donedávna odlišné argumenty pre niektoré z rodiny printf funkcií, dokonca nedávno kolegom objavená vtipná vec: rôzny počet argumentov pre nejakú printf funkciu v Debug a v Release builde, ... Vlastne ten kompilátor je možno fajn. Len z tej omáčky okolo mi občas idú vlasy dupkom.

    Hello! My name is Arjun Bijanki, and I’m the test lead for the Visual C++ compiler. I’m also Microsoft’s representative on the ISO C standard committee. ... Now, the Visual C++ compiler team receives the occasionally question as to why we haven’t implemented C99. It’s really based on interest from our users.

    I rest my case.
    4.6.2009 21:18 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Slova vetsinou a standardni si pri cteni te vety asi preskocil co? :-D

    Ale ano, podpora pro Cecko je na hrozne urovni.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.6.2009 12:26 Dušan Renát | skóre: 4
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    Tohle pravděpodobně pomohlo - tuhle chybu už to nehlásí. Místo toho to hlásí
    C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.tex
    t+0x104): undefined reference to `WinMain@16'
    Ano, mám tam funkci main, a to ve formátu
    int main(int argc, char * argv[])
    
    Zkoušel jsem i -mwindows přepínač při linkování i překladu (někde jsem to vygooglil) a nic.
    4.6.2009 12:58 potejo
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Moment on je to ceckovy program nebo c++ zkusil bych mozna prejmenovat main.c na main.cpp ikdyz mozna je to blbost jak od teho vypada makefile?

    4.6.2009 13:16 Dušan Renát | skóre: 4
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf
    V tomhle tématu pokračuju jinde, aby když to pak někdo bude hledat, aby to snáz našel. Protože si myslím, že tenhle problém s původním moc nesouvisí.
    4.6.2009 11:46 potejo
    Rozbalit Rozbalit vše Re: Přenositelnost C++ z Linuxu na Windows - ::swprintf

    Toto uz je mimo ale mozna bys upotrebil novejsi verze gcc http://tdragon.net/recentgcc/ Ale zmineny problem to neresi.

    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.