39030

39030



153


JAK ZBUDOWANA JEST BIBLIOTEKA

Zmiana dostępu do funkcji i zmiennych (static i extern)

Język C. w przeciwieństwie do swego młodszego krewnego C++ nie posiada praktycznie żadnych mechanizmów ochrony kodu biblioteki przed modyfikacjami. C++ ma w swoim asortymencie m.in. sterowanie uprawnieniami różnych elementów klasy. Jednak programista piszący program w C nie jest tak do końca bezradny. Autorzy C dali mu «k> ręki dwa narzędzia: extern oraz static. Pierwsze z tych słów kluczowych informuje kompilator, że dana funkcja lub zmienna istnieje, ale w innym miejscu, i zostanie dołączona do kodu programu w czasie łączenia go z biblioteką.

extern przydaje się. gdy zmienna lub funkcja jest zadeklarowana w bibliotece, ale nie jest udostępniona na zewnątrz (nie pojawia się w pliku nagłówkowym). Przykładowo:

/• biblioteka.h */

extern char zmienna_dzielona[];

/• biblioteka.c */

Sinclude "biblioteka.h"

char zaienna_dzielona[] = "Zawartość";

/* main.c •/

•include <stdio.h>

•include "biblioteka.h"

int mainO

{

printf("%s\n", zmienna_dzielona); return 0;

>

Gdybyśmy tu nie zastosowali extern. kompilator (nie linker) zaprotestowałby, że nie zna zmiennej zmiemuudzieUma. Próba dopisania deklaracji char zaicnna dzielona; stworzyłaby nową zmienną i utracilibyśmy dostęp <k> interesującej nas zawartości.

Odwrotne działanie ma słowo kluczowe static użyte w tym kontekście (użyte wewnątrz bloku tworzy zmienną statyczną, więcej informacji w rozdziale Zmienne). Może ono odnosić się zarówno do zmiennych jak i do funkcji glolMtlnych. Powoduje, że dana zmienna lub funkcja jest niedostępna na zewnątrz biblioteki1. Możemy dzięki temu ukryć np. funkcje, które używane są przez samą bibliotekę, by nie dało się icłi wykorzystać przez extern.

'Tak naprawdę cale “ukrycie" funkcji |x>lega na zmianie niektórych danych w pliku z kodem binarnym danej biblioteki (pliku o), przez co linker |>owodujc wygenerowanie komunikatu o błędzie w czasie łączenia biblioteki z programem.



Wyszukiwarka

Podobne podstrony:
Zanim zaczniemy coś zmieniać w jądrze należy pamiętać, że Nie mamy dostępu do funkcji biblioteki
Ba, wiemy nawet, jak sami jesteśmy zbudowani, a przynajmniej, jak zbudowany jest i jak funkcjonuje n
>> Jak wyglqdajq studia?W:y    ..... «? ■» ", • Pracownia i dostęp do
[link kieruje do wykazu bibliotek z dostępem do książki] 41.    Szyłak, Jerzy : Poety
ScanImage66 (2) Jak zbudowany jest silnik gry Silnik Irrlicht Wykonanie nawet prostej trójwymiarowej
2. Materiał/ konstrukc/jne — drewno •    Jak zbudowane jest drzewo? •
jak zbudowany jest atom? moOol otomu Bonu ▲ Oj iom ruO»^r> JUWW Wt» *V»v c+*yt - pm«r/ u ) • nmAt
CCF20071026012 4. Moduł upper while (jest następny wiersz) do Funkcja getline; while (jest następny
Jak zbudowany jest wulkan? Głęboko pod ziemią, bo około lkm, gromadzi się magma, tworząc magmow
strona (07) Zabawka — gra stołowa zbudowana jest w kształcie „boiska’* do gry w piłkę nożną. W grze
rys 5 19 Ponadto realizacja poszczególnych faz w pracy potokowej jest ograniczona dostępem do zasobó
Jak umieszczony jest monitor w stosunku do okna? ■    okno za monitorem okno na
KWESTIONARIUSZ Jak zbudowany jest kwestionariusz? Wstęp -> Wprowadzamy informacje o środku badawc
20 Ewa K. Świętek nająć, jak ważne jest stosowanie się do tych sześciu „dróg”. Także w trakcie nauki
5. Jak zbudowany jest news? Pisząc informacje musimy odpowiedzieć na pytania: ■
Dylematy analizy dyskursu Jak zbudowany jest dyskurs, jakie argumenty, światopoglądy, stylistyki, re

więcej podobnych podstron