Słowa kluczowe od A do Z25Modyfikator __cdecl należy umieścić przed nazwą zmiennej lub funkcji...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.
»
16|98|Kiedy recytujesz Koran, to szukaj ucieczki u Boga przed szatanem przekletym!16|99|Nie ma on bowiem zadnej wladzy nad tymi, którzy uwierzyli i którzy ufaja...
»
co są najgotowsi do ofiary? Posłuchajcie! Chcecie walki? Macie ją przed sobą; godna Polski i polskich dzieci, będzie to bój nie mniej srogi, nie mniej...
»
— czyż nie śmiano się z mitycznych bogów? Nawet zjawiska pełne powagi, ba — tragiczne, bywają przedmiotem żartów...
»
— Wszystko w porządku? — Jane podeszła szybko, przed fotelem Adriana, do łóżka męża...
»
Po jakichś pięciu minutach zapadałem zwykle w rodzaj półsnu, po czym roztaczałem przed sobą taką wizję: Oto w moim ciele wyraża się doskonałość Boga...
»
276Diddleya, i wystpi przed szeciotysiczn widowni festiwalu zapowiedziany przez Boba Dylana, z ktrym jamowa wczeniej w znanym temacie Shake, Rattle And...
»
Tak twierdzi Brandes, żyd z Kopenhagi, który przez 22 lata był przeciwnikiem sjonizmu, aż wreszcie wyraźnie wyznał przed światem całym, że nie widzi...
»
Pewnego dnia obserwowany przez Serkisofa chłopak znów wyruszył przed siebie bez celu i wtedy na dworcu autobusowym udało mu się odnaleźć „to coś", co mogło...
»
– Dom, z którego przed chwilą wyszłaś – przytaknął kot...
»
Simonides i Estera przybyli przed kilku dniami z Antiochii; ciężka to była podróż dla kup- ca, bo przebył ją w lektyce, do dwóch umocowanych wielbłądów,...

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.

Domyślnymi konwencjami nazewnictwa oraz wywoływania są konwencje języka C. W związku z tym,
zastosowanie modyfikatora __cdecl potrzebne jest tylko wtedy, gdy ustawiona jest opcja kompilatora /Gz (__stdcall) lub /Gr (__fastcall). Opcja kompilatora /Gd wymusza konwencję wywoływania __cdecl.
Przykład
W poniższym przykładzie kompilator zostaje „poinstruowany”, że w przypadku funkcji
należy zastosować konwencję nazewnictwa i wywoływania języka C:
M #;F# F; # ; ;=
P125QM $9 %
M #;F# F; # ; ;R ; ;=
-GG6% $ ' % 8&9 % &)SG1)&
__declspec
Słowo kluczowe __declspec jest wykorzystywane w celu określania klasy pamięci (ang.
storage-class) przy użyciu tzw. składni atrybutów rozszerzonych (ang. extended attribute syntax). Za pomocą słowa kluczowego __declspec ustalamy, że egzemplarz danego typu ma zostać umieszczony w pamięci wraz z jednym z wymienionych poniżej atrybutów klasy pamięci specyficznych dla kompilatora Microsoftu. Przykładami innych modyfikatorów klasy pamięci są słowa kluczowe static oraz extern. Te słowa kluczowe wy-stępują jednak w specyfikacji ANSI języków C oraz C++ i dlatego nie są uwzględnione w składni atrybutów rozszerzonych. Składnia atrybutów rozszerzonych upraszcza i stan-daryzuje rozszerzenia wprowadzone przez firmę Microsoft do języków C oraz C++.
Oto gramatyka atrybutów rozszerzonych dla języka C++.
Gramatyka
specyfikator-deklaracji :
__declspec ( sekwencja-modyfikatorów-deklaracji-rozszerzonej )
sekwencja-modyfikatorów-deklaracji-rozszerzonej:
modyfikator-deklaracji-rozszerzonejopc
modyfikator-deklaracji-rozszerzonej sekwencja-modyfikatorów-deklaracji-rozszerzonej
modyfikator-deklaracji-rozszerzonej :
align(#)
allocate("nazwasegmentu")
deprecated
dllimport
dllexport
naked
noinline
noreturn
nothrow
novtable
property({get=nazwa_funkcji_get|, put=nazwa_funkcji_put})
26
Rozdział 2. Słowa kluczowe, modyfikatory oraz instrukcje
selectany
thread
uuid("GUID_ObiektuCom")
Separatorem w sekwencji modyfikatorów deklaracji jest znak odstępu. Przykłady pojawią się w dalszej części książki.
Gramatyka atrybutów rozszerzonych udostępnia następujące atrybuty klasy pamięci specyficzne dla kompilatora Microsoftu: align, allocate, deprecated, dllexport, dllimport, naked, noinline, noreturn, nothrow, novtable, selectany oraz thread. Dostępne są również następujące atrybuty dotyczące obiektu COM: property oraz uuid.
Atrybuty klasy pamięci thread, naked, dllexport, dllimport, nothrow, property, selectany oraz uuid są właściwościami wyłącznie deklaracji obiektu lub funkcji, do której zostały zastosowane. Atrybut thread ma wpływ jedynie na dane i obiekty. Atrybut naked ma wpływ jedynie na funkcje. Atrybuty dllimport oraz dllexport wpływają na funkcje, dane oraz obiekty. Atrybuty property, selectany oraz uuid mają wpływ na obiekty COM.
Słowo kluczowe __declspec powinno zostać umieszczone na początku deklaracji prostej.
Kompilator zignoruje, bez ostrzeżenia, wszystkie słowa kluczowe __declspec umieszczone po operatorach lub , a także tuż przed identyfikatorem zmiennej w deklaracji.
Atrybut __declspec określony na początku deklaracji typu definiowanego przez użyt-kownika dotyczy zmiennych tego typu, na przykład:
$ T' T
W tym przypadku atrybut dotyczy zmiennej . Atrybut __declspec umieszczony po
słowie kluczowym class lub struct dotyczy danego typu definiowanego przez użytkow-nika, na przykład:
$ T
W tym przypadku atrybut dotyczy typu .
Ogólna zasada dotycząca stosowania atrybutu __declspec w przypadku deklaracji pro-stych jest następująca:
!
Sekwencja-specyfikatorów-deklaracji powinna zawierać między innymi typ bazowy
(np. int, float, typ typedef lub nazwę klasy), klasę pamięci (np. static, extern) lub rozszerzenie __declspec. Lista-inicjalizowanych-deklaratorów powinna zawierać między innymi wskaźnikową część deklaracji, na przykład:
% 8"GU&# ? EE&=; E E
C#DA C ; <; =
% "GU&# ? EE&=; E E
C#DA C ; <; =
% "-VW)& EE =#DA C
;
Słowa kluczowe od A do Z
27
W poniższym fragmencie kodu zadeklarowano zmienną lokalną wątku typu int i przy-
pisano jej wartość początkową.
M #;F# F; #
9 8
__event
Deklaruje zdarzenie.
Uwagi
Słowo kluczowe __event można zastosować w deklaracji metody, deklaracji interfejsu lub deklaracji danej składowej.
W zależności od tego, czy źródło oraz odbiorca zdarzeń tworzone są w rodzimym języku C++, w technologii COM, czy w tzw. kodzie zarządzany m (ang. managed code) plat-formy .NET Framework, jako zdarzeń można użyć następujących konstrukcji:
Rodzimy język C++
COM
Kod zarządzany (.NET Framework)
metoda

metoda

interfejs



dana składowa
W celu skojarzenia metody obsługi zdarzenia z metodą zdarzenia należy użyć instrukcji __hook. Należy zauważyć, że po utworzeniu zdarzenia za pomocą słowa kluczowego
__event, w momencie wywoływania tego zdarzenia zostaną wywołane wszystkie kolejno
do niego „przyczepione” procedury obsługi.
Deklaracja metody za pomocą słowa kluczowego __event nie może posiadać definicji
— zostaje ona niejawnie wygenerowana, w wyniku czego dana metoda zdarzenia może
zostać wywołana tak, jakby była zwykłą metodą.
Zdarzenia rodzime
Zdarzenia rodzime są metodami. Wartość zwracana jest zwykle wartością typu HRESULT

Powered by MyScript