.[ ČeskéHry.cz ].
Nový web pro podporu výuky jazyka C++
Jdi na stránku Předchozí  1, 2
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
OndraSej



Založen: 28. 07. 2007
Příspěvky: 728
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 29. říjen 2017, 11:41:22    Předmět: Odpovědět s citátem

- nejsem si jistý, nakolik má smysl překládat technické výrazy, když stejně většina dokumentace je v angličtině a pak člověk musí při čtení ještě navíc mapovat výrazy z jednoho jazyka do druhého.
- pokud u nějaké hodnoty záleží na konkrétním typu (protože ho vyžaduje specifikace nějakého binárního formátu), je [u]int_XY podle mě nejlepší volba. Pokud konkrétní typ není nutný (např. pro většinu for cyklů), používám buď int nebo int64_t (pokud 32 bitů nestačí). Pro poly bytů používám buď uint8_t (když mám na výběr), nebo char (pokud ho vyžaduje nějaké API).
- specifikace sice neříká, že char má 8 bitů, ale dost by mě překvapilo, kdyby to tak v nějakém překladači nebylo, protože by si tím autoři koledovali o zbytečné problémy se špatně napsaným software. Možná s výjimkou nějakých jednočipů, ale i tam by mě to spíš překvapilo.
- vyzkoušeno na aktuálním OS X/XCode: CHAR_BIT je pořád 8. Pro znakové sady s víc bity tu máme wchar_t (standard ve Win32 API). Na druhou stranu, utf-8 (standard na webu) je 8-bitové kódování, tj. opět ne-8-bitový char by znamenal jen zbytečné potíže.
- v moderním C++ klasická C-style pole opodstatnění nemají, pokud nepíšeš vlastní implementaci STL. Pro staticky alokované pole je tu std::array, pro dynamicky alokované std::vector. Pro předávání bloku paměti jako argument absl::Span (nebo podobný wrapper). C pole jsou pro masochisty a lidi pracující s legacy kódem.
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 471

PříspěvekZaslal: 29. říjen 2017, 11:45:08    Předmět: Odpovědět s citátem

evonox napsal:
[*]Z dob jazyka C se táhne zvyklost používání datového typu char pro binární buffery. Vzhledem k tomu, že jsem se někde na StackOverflow ale dočetl, že char je na MacOS už dva byty


Můžu se zeptat na link, kde ses to dočetl?! Nepřijde mi to pravděpodobné (a rozbilo by to spoustu C programů a ABI, OSX je založený na BSD a tam to bude prolezlé na spoustě míst).
Java má char 2 byty, používá UCS-2 nebo UTF-16. Z mého pohledu nejlepší řešení je multibyte kódování a UTF-8.
Já vím jenom o tom, že char je na některých platformách unsigned a že wchar_t je na Unixech 4 byty a na Windows 2.

Co se týká češtiny, asi bych to nepřeháněl. U takto specializovaných výrazů nemusí existovat ekvivalent a pokud nechceš vymýšlet nové pojmy,
kterým budeš rozumět jenom ty, tak bych to asi neřešil, nejsme ve Francii.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
evonox



Založen: 08. 03. 2013
Příspěvky: 11

PříspěvekZaslal: 29. říjen 2017, 19:07:00    Předmět: Odpovědět s citátem

Tak ono je to s tím charem ještě trochu jinak a už tomu rozumím. O MacOS jsem to nedohledal, ale v podstatě tento článek by k tomu měl poskytnout vhled: http://www.embecosm.com/2017/04/18/non-8-bit-char-support-in-clang-and-llvm/.
Ve stručnosti:

  • Za prvé standard C++ nikde nezaručuje, že char je 8 bitů. Velikost char je implementation-defined.
  • Za druhé v odkazu je, že char by měl být the minimum addressable unit, u PC platforem stále 8-bit. Akorát není v tom žádná záruka, jen to je nepsaná konvence zatím. Proto ty buffery pomocí char by měli být O.K. přenositelné a uint8_t by fungovalo jen u platforem s minimální adresovatelnou jednotkou velikosti 8-bitů.
  • Ve článku je sice zmiňován standard C, ale myslím, že můžeme usoudit, že v případě C++ to může být obdobné.

_________________
Evonox
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna