Recenze: RAD Studio 10.2 Tokyo

V březnu letošního roku uvolnila firma Embarcadero Technologies další verzi RAD Studia, pojmenovanou pro změnu Tokyo a označenou číslem 10.2.

Recenze: RAD Studio 10.2 Tokyo


C++

Také překladačů jazyka C++ je v RAD Studiu 10.2 sedm; dva z nich –  BCC32 a BCC32C – jsou určeny pro Win32, další jsou pro ostatní cílové platformy. V současné verzi RAD Studia dosud není k dispozici překladač C++ pro Linux.

Překladač BCC32 je odvozen od BCC, původního šestnáctibitového překladače jazyka C++, který vyvinula firma Borland v devadesátých letech minulého století. Od něj je také odvozen překladač BCCOSX pro Mac OS X.

Všechny ostatní překladače C++ kromě BCC32 a BCCOSX jsou založeny na vstupní části („frontendu“) Clang a na infrastruktuře LLVM (Low Level Virtual Machine).

Přehled překladačů jazyka C++ v RAD Studiu, jejich cílových platforem a použitých verzí Clang a LLVM najdete v následující tabulce, kterou jsem převzal z dokumentace.

Překladač

Cílová platforma

Verze Clang

Verze LLVM

BCC32

Win32 - -
BCCOSX OS X - -
BCC32C Win32 3.3 3.3
BCC64 Win64 3.3 3.3
BCCIOSARM 32bitový iOS 3.3 3.3
BCCIOSARM64 64bitový iOS 3.3 3.5
BCCAARM   Android 3.3 3.5

Překladač  BCCIOSARM  byl oproti předchozí verzi RAD Studia aktualizován (předchozí verze používala LLVM verze 3.1), ostatní jsou stejné jako v předchozí verzi.

Poznamenejme, že při vývoji aplikace pro Win32 můžeme volit, zda chceme původní překladač BCC32 nebo překladač BCC32C. Výchozí je BCC32; ke změně použijeme dialog s volbami projektu.

Rozdíly mezi překladači

Překladače založené na původním borlandském překladači BCC se od překladačů založených na Clang liší ve shodě se standardem jazyka – k tomu se vrátíme dále. Vedle toho se liší i v následujících ohledech:

  • Přepínače, používané v příkazové řádce těchto překladačů, jsou výrazně odlišné.
  • Překladače založené na Clang dovolují deklarovat implicitní hodnoty parametrů pouze v deklaraci funkce. Původní borlandské překladače je tolerují také např. v deklaraci ukazatele na funkci nebo na metodu.
  • Překladače založené na Clang nedovolují použití operátoru sizeof v direktivě #if (to je v rozporu se standardem jak jazyka C, tak i jazyka C++). BCC32 to dovoluje.
  • Překladače založené na Clang poněkud přísněji kontrolují konverze. Například v případě deklarace
    char * p = "nějaký řetězec"; kterou BCC32 ponechá bez povšimnutí, ohlásí překladače založené na Clang varování, neboť automatická konverze typu const char* na typ char* patří mezi zavržené konstrukce.

Další informace lze najít na webových stránkách [3].



Úvodní foto: Fotolia - Melpomene










Komentáře