Podstawowa mechanika atrybutów

Aby wstawić atrybuty do projektu na trzy sposoby.Po pierwsze można wstawiać ręcznie w kodzie źródłowym.Po drugie można wstawić je za pomocą siatki właściwości obiektu w projekcie.Wreszcie można wstawić je przy użyciu różnych kreatorów.Aby uzyskać więcej informacji o korzystaniu z okna właściwości i różnych kreatorów, zobacz Tworzenie i zarządzanie projektami Visual C++.

Począwszy od programu Visual C++.NET, kompilator rozpoznaje obecność atrybutów w pliku źródłowym i jest zdolny do dynamicznego analizowania i weryfikuje ich podczas kompilacji.

Jak przed, podczas tworzenia projektu kompilator analizuje każdego pliku źródłowego języka C++, produkujących pliku obiektu.Jednakże gdy kompilator napotyka atrybutu, jest analizowany i syntaktycznie zweryfikowane.Następnie kompilator wywołuje dynamicznie dostawcą atrybutu, aby wstawić kod ani wprowadzać innych modyfikacji w czasie kompilacji.Wdrożenie dostawcy różni się w zależności od typu atrybutu.Na przykład atrybuty związane z ATL są implementowane przez Atlprov.dll.

Na rysunku poniżej pokazano relację między kompilator i dostawca atrybutu.

Komunikację atrybutów składników

[!UWAGA]

Użycie atrybutu nie zmienia zawartość pliku źródłowego.Kod wygenerowany atrybut jest widoczny tylko raz, to podczas sesji debugowania.Ponadto dla każdego pliku źródłowego w projekcie można wygenerować plik tekstowy, który wyświetla wyniki podstawiania atrybutu.Aby uzyskać więcej informacji dotyczących tej procedury, zobacz /Fx (Scal wstrzykiwana kod) i Debugowania kodu wstrzykiwana.

Podobnie jak większość konstrukcje języka C++ atrybuty mają zestaw właściwości, który definiuje ich właściwego użycia.Odnosi się do kontekstu atrybutu i skierowana jest w tabeli atrybutu kontekstu dla każdego tematu odwołanie do atrybutu.Na przykład coclass można tylko można zastosować atrybutu do istniejącej klasy lub struktury, w przeciwieństwie do cpp_quote atrybut, który może być wstawione w dowolnym miejscu w pliku źródłowym C++.

Zobacz też

Inne zasoby

Pojęcia związane z programowaniem opartym na atrybutach