Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C++ - Aký majú význam "podtržítkové" funkcie?

Prečo sa identifikátory mnohých funkcií v C++ začínajú podtržítkami (_)? Aký to má vlastne zmysel? Podľa mňa to dosť zneprehľadňuje kód v zdrojovej podobe. Veď napríklad je try a __try pre VCL? Prečo je C++ také rozdrobené a zneštandardizované? Chápem, že je to pre maximálne využitie možností aktuálneho systému, ale načo try a __try? Taktiež mnohé funkcie v BC++ 3.5 pre DOS boli riešené s potržítkom, ak sa jednalo o typ premennej s väčšou dĺžkou v pamäti. Prečo to nemôže byť ako napr. v Pascale, kde pre všetky typy premenných funguje jedna funkcia, napr. GetTime? Ekvivalent pre BC++ 3.5 je GetTime a _DOS_GetTime. Prečo je to takto sťažené? Veď C++ oficiálne umožňuje viacnásobnú deklaráciu funkcie s inými parametrami.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Napriklad ohledne tech exceptions... je to tak, ze mas na vyber nekolik mechanismu osetreni vyjimek.…
Ynd0r 26.05.2006 23:35
Ynd0r
Dobre, takže tomu povedzme, že rozumiem. Ale prečo teda niečo podobné nie je v Pascale a Object Pasc…
msx. 27.05.2006 00:19
msx.
Aka multiplatformost Delphi??? ::) Ja som teda este nevidel delphi na nejakom DEC, G5, MacOS alebo U…
MM.. 27.05.2006 00:33
MM..
A nebylo by lespi vzhledem k multiplatformovosti mit jednu funkci, ktera by vyuzivala prostredky nej…
Jan Fiala 27.05.2006 10:34
Jan Fiala
Rozne pomenovane fcie nedelaji stejnou funkci. Aj rovnaka vec sa da urobit viacerymi sposobmi, a kaz… nový
MM.. 27.05.2006 15:03
MM..
A k čomu je potom to CLX? Edit: SubChild.asp VCL je zalozena na WinControl, CLX je platformove nez… nový
msx. 27.05.2006 15:27
msx.
Akoze vyvinut dnes kniznicu Win+Linux mozes aj pre vyvojove prostredie C/C++, a aj take kniznice exi… poslední
MM.. 27.05.2006 15:46
MM..

Napriklad ohledne tech exceptions... je to tak, ze mas na vyber nekolik mechanismu osetreni vyjimek.
Jeden je definovany v C++ od Stroustrupa a pouziva "try", "catch" a "throw". Ve vetsich projektech ma ale celkem velkou rezii a zpomaluje.
Pak existuje efektivnejsi zpusob, ktery je "zapusten" do woken - ten pouziva "__try", "__except" a "__finally"

 __try{ ... } __except(vyraz){ exception handler }
 __try{ ... } __finally(vyraz){ termination }

Pak jsou jeste MFC exceptions, ale ty sem ted netahejme..
Protoze uvedene zpusoby jsou na sobe nezavisle (dokonce by se mohly i kombinovat, i kdyz je to vetsinou blbost), jsou proste odliseny tema podtrzitkama - a ty oficialni dostaly prednost.

U jinych funkci maji podtrzitka zase jine duvody - treba se tak oznacuji nestandardni nazvy funkci ve standardnich knihovnach, nebo funkce ktere je mozne nahradit makrem...

Dobre, takže tomu povedzme, že rozumiem. Ale prečo teda niečo podobné nie je v Pascale a Object Pascale? Pri C je to spôsobené aj tým, že C je multiplatformový jazyk a teda aby ostala multiplatformnosť zachovaná, tak sú odlišné príkazy s podtržítkom. Ale napr. v Delphi sú komponenty CLX pre zachovanie multiplatformnosti, ale podtržítka nikde. Ako je to teda riešené tam?

Aka multiplatformost Delphi??? ::) Ja som teda este nevidel delphi na nejakom DEC, G5, MacOS alebo Unixe. Existuje?

P.S. snazime sa ti vysvetlit ze sa jedna o odlisenie dvoch roznych veci. Mohlo by sa to volat aj
try1 catch1
try2 catch2

mne sa zda lepsie podtrzitko...

Ak delphi vie len jeden sposob, tak nemas podtrzitka, ale to to je problem delphi ze je obmedzeny.

Rozne pomenovane fcie nedelaji stejnou funkci. Aj rovnaka vec sa da urobit viacerymi sposobmi, a kazdy sposob moze mat ine nevyhody, ak mas moznost pouzit viac roznych sposobov ako urobit rovnaku vec, je to IMHO vyhoda, nie? V tomto pripade nejde o multiplatformost, ide o moznot urobit jednu vec na jednej platforme dvomi roznymi sposobmi.

Co sa tyka MS VC++ tak si MS asi povedal ze urobi rozsirenejsie ale podobne fcie napr. k fcii open tak nadrbal do nazvu podtrzitko (_open, http://msdn.microsoft.com/library/default.asp?url=/ library/en-us/vclib/html/_crt__open.2c_._wopen.asp), potom bud mapuje v headri nazov "open" na spravnu fciu podla toho ci unicode, tchar, a podobny bordel, alebo open vobec nedefinuje a pri portovani clovek vidi ze aha pozor windows ma bordel v znakoch (1byte vs. 2byte character, apod.).

BTW. zaoberat sa nazvami fcii/makier je IMHO dost divne (ako som pisal moze si to nazvat ako chce cez #define).

Zpět do poradny Odpovědět na původní otázku Nahoru