7.6   Operatory rovnosti.
Tak ako v  inych  kompilatoroch  nulovy (nil  or  null)  pointer
je skutocne 0 (nula) ako koncepcne tak i  v  dosledku  pointrov,
ktore mozu ukazovat na adreasu 0 v pamati, nemoze byt jednoducho
porovnavany s NIL.
7.8   Bitovy (bitwise) AND operator.
7.9   Bitovy exclusive OR operator.
7.10  Bitovy inclusive OR operator.
7.11  Logicky AND operator.
7.12  Logicky OR operator.
7.13  Podmienkovy operator.
7.14  Operatory oznacenia.
Kompilador nedovoluje oznacenie pointrov v integer alebo  naopak
okrem oznacenia 0 (nuly) ako pointer NIL. Toto obmedzenie je ur-
cene na to, aby nespravne hodnoty neoznacovali pointer (ako napr
chybanie * alebo & operatora) a v dosledku toHo neprepisali  pa-
mat. Je mozne  pouzit  explicItny  typ  konverzie,  aby  pointer
ukazoval na prislusne miesto v pamati:
         typedef integer *adresa ;
         adresa           ptr ;
         ptr = cast(adreca) 0xBC00 ;
7.15  Operator ciarky.
Nie je implementovany.
8.    Deklaracie.
V zhode s normalnym sposobom programovania v jazyku C  lubovolny
specifikator pamatovej triedy musi byt deklarovany pred specifi-
katormi typu. Tak syntax pre decl-specifier je:
        decl-specifiers:
            sc-specifier
                        opt
            decl-specifiers      type-specifier
8.1   Specifikatory pamatovej triedy.
'extern' specifikator ma obmedzene pouzitie nakolko  tu  nie  su
ziadne oddelene subory. Je pouzivany v specialnom pripade  funk-
cii kniznice nie typu int. Tieto funkcie nie su  definovane  pri
pouziti v programe, pretoze sa  definuju  az  ked  sa  kniznicny
subor najde na konci programu (vid cast 12.2).
Ich typy, pravdaze, musia byt  deklarovane  pred  ich  pouzitim,
inak su deklarovane implicitne ako funkcia, ktorej  vysledok  je
typu int (function returning-int). Takze externa deklaracia musi
byt urobena na zaciatku programu. Tato deklaracia  je  v  subore
hlavicky  kniznice  pre  standardne  funkcie   kniznice.    Tato
deklaracia  nesposobi  nahranie  funkcie   z    kniznice,    len
aktualizuje pouzitie funkcie.
Specifikator registra sa akceptuje ale ignoruje  kym  kompilator
nema ziadne pristupne registre pre premenne.
8.2   Specifikatory typu.
Specifikatory long a short su akceptovane, ale su ignorovane.
'long int' a 'short int' su rovnake ako int (16 bitov).
8.3   Deklaracie.
8.4   Vyznam deklaracii.
8.5   Struktura a norma deklaracii.
Polia, casto nazyvane bitove polia (bitfields), nie su implemen-
tovane. Na dosiahnutie jednotlivych bitov v byte je nutne pouzit
bitove operatory a posuvy.
Mena struktur i clenov zdielaju spolocny priestor nazvov,  takze
jednoduch premenne ako aj struktury nesmu  mat  rovnake  mena  -
ako napriklad integer.
8.6   Inicializacia.
Inicializatory su zavedene pre staticke a externe premenne,  nie
vsak pre automaticke premenne. Inicializacia automatickej  skal-
arnej premennej je vykonana puhym uvedenim urcujeceho vztahu.
Inicializacia automatickych agregatov (lokalne polia a struktury
na baze stacku) nie je dovolene v jazyku C; avsak HISOFT - C  u-
moznuje  "move()" v kniznici funkcii, co  moze  byt  pouzite  na
inicializaciu lokalneho pola alebo struktury skopirovanim obsahu
statickeho pola. Vsimnite si, ze staticka premenna je  vyhodnej-
sia nez automaticka, ledaze funkcia je rekurzivna alebo  urcenie
miesta predpisuje automaticku. Inicializator struktury je seriou
konstant, ktore generuju byty ako pri "inline" (vid  9.14).  Nie
su zoradene na hraniciach poli. Inicializacia sa vykonava v kaz-
dom case pri behu kompletneho programu.  Nebezi  vsak  v  direct
mode.
8.7   Mena typov.
Jedine povolene mena typov su predefinovane typy  a  tie,  ktore
boli deklarovane v 'typedef' deklaracii.  Abstraktne  deklaracie
nie su dovolene. mozu byt umiestnene pomocou typedef deklaracie,
ak sa maju vyskytovat v danom programe s vysledkom zvysenia pre-
hladnosti a zabezpecenia typu.
8.8   Typedef
9.     Prikazy.
9.1    Prikazy vyjadrenia vyrazov.
9.2   Zlozene prikazy.
Deklaracie su povolene iba v hlavicke bloku funkcie, nie su  po-
volene v inych zlozenych vyrazoch.
9.3   Podmienkove prikazy.
9.4   Prikaz 'while'.
9.5   Prikaz 'do'.
9.6   Prikaz 'for'.
9.7   Rozdelovaci (switch) prikaz.
Nesmie obsahovat deklaracie v hlavicke vyrazov, ktore zahrna.
9.8   Prikaz prerusenia. (break)
9.9   Prikaz pokracovania (continue).
9.10  Prikaz navratu (return).
9.11  Prikaz 'goto'.
9.12  Vyraz 'label'.
9.13  Nulovy prikaz.
9.14  Prikaz 'inline'.        (NOVY DIEL)
Hisoft C zabezpecuje moznost zabudovania strojoveho kodu do pro-
gramu v jazyku C. Novy typ prikazu, ktory sa pouziva (podoba  sa
na volanie funkcie) je:
    inline ( k1, k2, k3, ... ) ;
kde k1, k2, atd. je vypis  konstantnych  vyjadreni,  ktore  budu
vlozene do cieloveho programu. Vyrazy, ktorych  hodnota  lezi  v
rozsahu 0 az 255 vcitane budu obsadzovat jeden byte,  ine  cisla
sposobia obsadenie dvoch bytov. Moze byt pouzity lubovolny  kon-
stantny vyraz. Priklad - skok na adresu 0:
   inline(0xC3,0,0);   /* 0xC3 je 'JP' instrukcia Z80 */
alebo volanie adresy 1601 (hex) s cislom 3 v registri A  (otvara
kanal -stream 3):
   #define  CHAN_OPEN  0x1601
   #define  1d_a_with  0x3E
   #define  call         0xCD
   inline( 1d_a_with,3,  call,CHAN_OPEN );
a zapamatanie vstupneho znaku do globalnej premennej "c":
   #define 1d_mem_from_hl   0x22
   inline( call,getchar,   1d_mem_from_hl, &c );
Treba byt opanrny pri vyuzivani tychto moznosti. Prestudujte  si
cast "Low-Level" (nizka uroven) v tomto  manuali  na  vyhladanie
registrov, ktore je potrebne uschovat atd.
10.    Externe definicie.
10.1   Externe definicie funkcii.
Toto je pridavok k syntaxu definicie funkcii, co vytvara  sposob
definovania funkcii, ktore beru premenny pocet skutocnych  argu-
mentov  (nazyvaju  sa  "variadic"  funkcie).  Rezervovane  slovo
"auto" moze nasledovat deklarator  funkcie  pred  telom  funkcie
(medzi "f(...)" a "int arg;{...}"). Cielom je sposobit, aby kom-
pilator umiestnil pocet bytov skutocnej premennej  ako  pridavny
argument na konci. Funkcia ma tento argument k dispozicii a pod-
la neho zistuje, kolko dalsich  argumentov  tam  ma.  Standardne
funkcie kniznice "min"  a  "max"  funguju  s  pouzivanim  tychto
moznosti a zdrojovy kod  v  subore  hlavicky  (HEADER)  kniznice
"stdio.h" poskytuje priklad ako treba taku funkciu pisat.
10.2   Externe definicie dat.
11.    Pravidla prehladu (scope rules).
V Hisoft C je cely program kompilovany naraz, takze tu nie treba
linkovat skor kompilovane podprogramy (routines). Namiesto  toho
system poskytuje moznosti zdrojovej kniznice a o  tom  pojednava
cast 12.2.
11.1   Lexikalny prehlad.
Identifikatory priradene k jednoduchym premennym a tiez prira-
dene struktutam a jednotnym clenom nie su oddelene.
11.2   Prehlad externych prvkov.
12.    Kontrolne riadky kompilatora.
12.1   Tokenizovanie.
12.2 Zahrnutie suborov
Subory mozu byt zahrnute. Pomenovany subor je hladany,dve  formy
su identicke.Uvodzovky ''alebo zatvorky < > mozeme vynechat.
Teda nasledujuce prikazove riadky su identicke:
 # include "meno suboru"
 # include <meno suboru>
 # include  meno suboru
Okrem toho je moznost prehladania kniznice.Prikazovy riadok
 #include ? meno suboru ?
vyvola citanie a hladanie pomenovaneho  suboru.  Subor  sa  moze
skladat s postupnosti externych definicii funkcii. Kazda funkcia
bude kompilovana len, ked uz bola volana v programe  (  t.j.  ak
existuje pre nu FORWARD REFERENCE ).Tak je  mozne  mat  kniznicu
suborov funkcii a automaticky zahrnut len tie, ktore su potrebne
v programe. Zapamatajte si, ze  ak  nejake  funkcie  v  kniznici
(povedzme f() ) vlaju  ine  funkcie  v  kniznici  (povedzme  g()
),potom f() musi byt pred g(). Inak by bolo  prehladat  kniznicu
znovu. Ako  priklad  takehoto  typu  kniznice  pozrite  kniznicu
standartnych funkcii dodavanu s kompilatorom. Ina variacia - bez
mena  suboru  sa  pouziva  na  kompilaciu  zdroja,  ktory    bol
pripraveny editorom a je teraz v pamati textoveho bufferu:
 # include
# include moze byt zahrnute raz, lebo je  limitovane  priestorom
bufferu. Teda z priameho vstupu je mozne pouzit  #  include  pre
program, ktory opat pouziva #include pre hlavickovy subor  alebo
pre funkcie,ale tieto subory nemozu pouzivat # include.
Vsimnite si ze pretoze je k dispozicii len jeden magnetofon, nie
je mozne jeden subor na paske zahrnut do druheho suboru na paske
12.3. Podmienena kompilacia
Prikazy podmienenej kompilacie nie su implementovane.
12.4. Line control
Prikazy # line control nie su implementovane.
12.5. Kontrola listingu (nova cast)
Hisoft C poskytuje dalsiu moznost  kontroly  produkcie  listingu
kompilatorom. Kompilator normalne produkuje listing, ale prikaz:
 # list -
ho vypina.Na opatovne zapnutie pouzijeme:
 # list +
Ak subor obsahuje rovnaky pocet # list - a  #  list  +  nema  to
vplyv na listing programu, ktory ho obsahuje.
12.6. Priamy vypocet (nova cast)
Hisoft  C  dovluje  priamy   vypocet    vyrazov    kompilovanych
kompilatorom. Niekedy ho volame bezprostredny vypocet  a  je  to
podobne ako zadavanie prikazov v BASICu  bez  cisla  riadku.Toto
umoznuje prikazovy riadok:
 # direct +
a naopak
 # direct -
Vsimnite si,ze ak je  vyraz  vypocitany,  vysledok  sa  neobjavy
pokial nie printovany.Teda pouzitelny prikaz na vykonanie  tohto
moze byt: 'printf(''%'',190*42);'. Avsak nejake zmeny globalnych
premennych zostanu, teda moze byt  rozumne  vykonat  'count=10;'
pred nejakym dalsim prikazom. Zapamatajte  si  tiez,ze  globalne
premenne nebudu inicializovane na nulu.