Pár dotazù k C++

Josef Štengl ok1ced na nagano.cz
Středa Březen 12 14:45:29 CET 2014


… vyjma položek struktur, to je detail, který snad raději ani nezmiňovati :-)

Dne 12.3.2014 14:31, Ala napsal(a):
>> Co je  __attribute__ ?
>
> Cokolvek zacinajuce dvomi podciarnikmi alebo jednym podciarnikom a velkym
> pismenom je klucove slovo prekladaca (t.j. je zakazane uzivatelovi aj
> tvorcovi kniznice definovat taketo identifikatory). Kedze normou
> definovanych takychto klucovych slov je minimum (v C99 menovite tri,
> _Bool, _Complex a _Imaginary), vacsina z nich su specificke pre konkretny
> prekladac.
>
> V tomto pripade, __attribute__ pochadza z gcc, je mozne, ze ho na popud
> popularity gcc ma implementovany aj iny prekladac.
> http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
>
>
> ----
>
> Klucove slovo "static" ma v C (a pokial viem, aj v C++, ale ja nie som ++
> pozitiv :-) ) dva diametralne odlisne aj ked ciastocne sa prekryvajuce
> vyznamy:
> 1. obmedzuje viditelnost identifikatora (meno funkcie, premennej), pri
> ktorom je uvedeny, na subor, v ktorom sa nachadza
>
> 2. rusi automaticke obmedzenie trvania lokalnej premennej na jedno volanie
> funkcie (dalsi rozdiel oproti "normalnej" lokalnej premennej je, ze ak
> deklaracia takejto premennej obsahuje aj inicializaciu, tato sa na rozdiel
> od "normalnej" lokalnej premennej vykona len raz, pri spusteni programu -
> iny, mozno lepsie pochopitelny pohlad na lokalnu premennu oznacenu ako
> "static" je teda ten, ze sa sprava ako globalna premenna, ktora je vsak
> viditelna len vo vnutri funkcie).
>
> V C (od C99) ma "static" este jednu pomerne malo znamu, pomerne obskurnu a
> aj malo vyznamnu funkciu (ktoru myslim ze C++ nema) (C99 6.7.5.3):
>
> 3. ak sa pouzije pri deklaracii funkcie v parametri typu pole v hranatych
> zatvorkach (a aj to len v "najvonkajsich", ak by sa jednalo o viacrozmerne
> pole), znamena to zaruku pre prekladac, ze pri volani takejto funkcie toto
> pole bude vzdy existovat v celej deklarovanej velkosti. (Toto je
> optimalizacna "napoveda" prekladacu, vyznamna v tych pocitacoch, ktore
> dokazu na zaciatku pola na nejaku instrukciu zacat citat pole do cache,
> pricom vsak citanie z nejakej zle definovanej adresy (napr. NULL) by
> vyvolalo vynimku z jednotky spravy pamati MMU).
>
> Nenavidim C.
>
> wek
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list