[ yaelo @ 01.04.2006. 21:25 ] @
Da li moze neko da mi objasni sta znaci extern i kako se koristi?
[ kiklop74 @ 02.04.2006. 00:45 ] @
Odgovor na ovo pitanje prevashodno zavisi od jezika.

Ako govorimo o jeziku C onda se može reći sledeće:
- extern se koristi sa varijablama ili funkcijama.
Kada se deklariše neka funkcija sa prefixom extern to služi kao hint kompajleru i linkeru da se implementacija pomenute funkcije verovatno nalaze u nekom drugom source fajlu tako da pri linkovanju linker traži funkciju po svim dostupnim objektnim fajlovima ili bibliotekama. extern nije obavezujuća ključna reč već više stilistički prefix.

Na primer imaš funkciju deklarisanu ovako:

Code:

int test (int x);


i implementiranu ovako u fajlu test1.c

Code:

int test (int x) {
  return x;
}


U fajlu test2.c želiš da koristiš baš tu funkciju.

Dakle deklarišeš je prvo ovako:

Code:

extern int test(int x);


i zatim pozoveš:

Code:

int test2(void) {
  return test(2);
}


Isto važi i za neku globalnu varijablu.

Što se tiče C++ značenje extern je potpuno drugačije od C-a. Ako te i to zanima ti reci da napišem.

Ubuduće pre nego što pitaš bilo šta ovde otvori browser, skokni do google.com i uradi pretragu.

Neki od zanimljivih sajtova za C su:

http://c-faq.com/questions.html

http://en.wikipedia.org/wiki/C_programming_language
[ leka @ 03.04.2006. 02:47 ] @
Citat:
Što se tiče C++ značenje extern je potpuno drugačije od C-a

Pa i nije bas tako... extern klauzula u C++ radi isto sto i u C-u. :)
[ kiklop74 @ 03.04.2006. 15:03 ] @
U pravu si.

Loše sam se izrazio. Kada sam rekao da je značenje drugačije mislio sam na extern "C" / extern "C++" a to u stvari predstavlja samo proširenje osnovne funkcionalnosti extern.

Dakle mea culpa, treba preciznije da pišem ubuduće.

[ yaelo @ 03.04.2006. 23:18 ] @
Hvala.Inace u cemu je razlika u koriscenju extern-a u C++ u odnosu na C?
[ X Files @ 04.04.2006. 11:23 ] @
Već ti je Leka rekao da nema (skoro) nikakve razlike. Stvar je u tome da C++ ima još jedan
specijalan upotrebni slučaj kada se u C++ komapjleru daje do znanja sa:

extern "C"
{
}

...da se osloni na konvencije jezika C ali samo u datom bloku:
http://lists.debian.org/debian-hurd/2002/02/msg00105.html

O nekim nekompatibilnostima C i C++ pogledaj (mozda) ovde:
Incompatibilities Between ISO C and ISO C++
http://david.tribble.com/text/cdiffs.htm