Hlavní navigace

Názor ke článku Čeština? Jdi mi k šípku! od Lael Ophir - [71] MSVC není plně kompatibilní s ISO C99...

  • 14. 5. 2008 0:16

    Lael Ophir (neregistrovaný)

    [71] MSVC není plně kompatibilní s ISO C99 (což nakonec gcc také ne), a plná kompatibilita MSVC s C99 není plánována. Je to proto, že MS používá C++, a C je mu tedy celkem volné. MSVC je kompatibilní s ANSI/ISO C++ International Standard (ISO/IEC FDIS 14882), případné odchylky jsou dokumentované. Obecně byste měl používat funkce daného frameworku (MFC, ATL), případně Win32 API (ve všech případech budete používat Unicode stringy). Dnes se samozřejmě preferuje C#, nebo C++/CLI (aka ECMA-372).
    http://msdn.microsoft.com/en-us/library/45aft37a.aspx
    http://msdn.microsoft.com/en-us/library/3bstk3k5.aspx
    http://en.wikipedia.org/wiki/C%2B%2B/CLI
    http://en.wikipedia.org/wiki/Active_Template_Library
    http://gcc.gnu.org/c99status.html

    [74] Ten tar je sice pěkně v souladu s POSIXem, ale nefunkční, že.

    Já v Qt nepíšu, ale z toho, že obsah adresáře dostanu jako Unicode string, soubor otevírám s reference na Unicode string, a glibc (coby vrstva skrz kterou musí volání propadnout) používá char-based string, je to zjevné. Konverze zobrazení well-formed UTF-8 code unit sequence na UTF-32 je identita. Problémem je samozřejmě ill-formed UTF-8 code unit sequence. Nejsem uživatelem Linuxu, ale mám za to, že pokud máte název souboru v 8859-2, tak Qt aplikace zobrazí otazníky místo ill-formed sequence, a se souborem pak neumí pracovat (jestli chcete, zkuste si to, a podělte se o výsledek).

    Jak jsem už psal, kdybyste měl třídu pro jména souborů, tu konvertoval na Unicode string, a ten nedej bože zase převáděl na nějakou třídu pro normalizovaný Unicode, tak byste zbytečně framework komplikoval. Qt, glibc, .NET, Win32 a další běžně skladují jména souborů ve stringu. Qt by přišlo ke specialitce, která by znamenala třeba při krmení GUI jmény souborů držet zvlášť původní objekty jmen souborů, zvlášť stringy, a (jak jste navrhoval) ještě zvlášť normalizované Unicode stringy. To je přece značný overhead, a příšerný opruz pro autora aplikace.