Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

extern

[es] :: C/C++ programiranje :: extern

[ Pregleda: 3526 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon extern24.08.2001. u 00:01 - pre 274 meseci
Nije potpuno nepoznat ali mi je malo nejasn, modifikator extern, pa ako bi neko mogao da mi ga sto bolje objasni, najbolje na primeru sa komentarom. Trazim previse ali ako neko ima vremena neka napise, inace sta god.
Pozdrav.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: extern24.08.2001. u 14:18 - pre 274 meseci
Evo jedan primer koriscenja extern ->>>

Code:

int gg(){
  printf("cool \n");
}


i
Code:

extern int gg();
int main(){
  gg();
}


prvi je gg.c a drugi je gg1.c zatim uradis:

gcc -c gg.c
gcc -c gg1.c
pa onda gcc gg.o gg1.o -ogg
startuj program ./gg i dobijes output cool

Znaci extern ti omogucuje da koristis neki symbol u obj fileu koji se nalazi u drugom obj fileu ;o) i onda ih ulinkujes zajedno i to lepo radi.
recimo sa extern mozes da dograbis bilo koju funkciju iz modula koja se u kernelu exportuje preko /proc/ksyms
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: extern24.08.2001. u 15:59 - pre 274 meseci
Da jos jedna stvar u vezi da extern je da za razliku od automatic varijabli nemora da se setuje na 0, jer kad deklarises varijablu za extern ona je pri deklaracije setovana na 0.

poz.
 
Odgovor na temu

c00l_daem0n
Beograd

Član broj: 309
Poruke: 294
*.verat.net

Jabber: andrew@elitesecurity.org
ICQ: 53650656


Profil

icon Re: extern24.08.2001. u 17:02 - pre 274 meseci
kao sto predator kaze, a moze i za ovako nesto

BOF
--------
#include <stdio.h>

int main(int argc, char *argv[])
{
extern int a;
printf("%dn",a);
return 0;
}
...
...
int a=1;
----------
EOF

pogledaj sta bi dobio da stavis bez extern.
znaci moze da se koristi i kad imas samo jedan file
Would you translate me on the other page in face = Da li biste me preveli na drugu stranu ulice
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: extern24.08.2001. u 18:08 - pre 274 meseci
Citat:
c00l_daem0n je napisao:
kao sto predator kaze, a moze i za ovako nesto

BOF
--------
#include <stdio.h>

int main(int argc, char *argv[])
{
extern int a;
printf("%dn",a);
return 0;
}
...
...
int a=1;
----------
EOF

pogledaj sta bi dobio da stavis bez extern.
znaci moze da se koristi i kad imas samo jedan file


Ovo mi je malo nejasno sto si napisao. Ti si u main-u deklarisao int a, a zatim izvan main funkcije opet deklarisao i inicijalizovao. Onda ispada da je ova izvan main-a nova promenljiva?
A ako je ovo gore tako kao sto si napisao, da li onda uvek moram da deklarisem 'ponovo' u drugom fajlu istu tu promenljivu koja je ranije deklarisana sa extern u prvom fajlu.

Pozdrav.
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.infosky.net



+2 Profil

icon Re: extern24.08.2001. u 20:24 - pre 274 meseci
Da bi ti malo pojasnio evo:

Recimo imas program koji je smesten u vise source file-ova u prvom fajlu koji se zove recimo prg_1.c imas:
Code:

int i; /*global varijabla*/
.
.

i imas drugi source file prg_2.c iz koga hoces da pristupis varijabli int i iz prvog source file-a:
Code:

extern int i;

Ovim si kompajleru rekao da je varijabla int i deklarisana negde drugde (u drugom source file-u), na ovaj nacin pristupas varijabli u drugom .obj fajlu. (prg_1.c i prg_2.c ce biti kompalirani u dva .obj fajla koja ce na kraju biti linkovana)

poz.

[Ovu poruku je menjao kajla dana 08-24-2001 u 08:26 PM GMT]
 
Odgovor na temu

c00l_daem0n
Beograd

Član broj: 309
Poruke: 294
*.telekom.yu

Jabber: andrew@elitesecurity.org
ICQ: 53650656


Profil

icon Re: extern25.08.2001. u 10:54 - pre 274 meseci
kada kazs int a; ti deklarises promenljivu, a extern deklaracijom
mu kazes samo da postoji negde(u istom,ili u drugom file-u) promenljiva a
Would you translate me on the other page in face = Da li biste me preveli na drugu stranu ulice
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: extern25.08.2001. u 15:45 - pre 274 meseci
Citat:
kajla je napisao:
Da bi ti malo pojasnio evo:

Recimo imas program koji je smesten u vise source file-ova u prvom fajlu koji se zove recimo prg_1.c imas:


Ja se izvinjavam na opasci ali mislim da sam ovo pomenuo ?
extern nikad nije setovan na 0 jer on jednostavno kaze da negde postoji symbol sa tim imenom koji ce da se nadje i realocira se sve lepo u odnosu na taj sysmbol.
Zasto je 0 ? Zato sto ti alociras data na bss/data segmentu koji su setovani na 0 po diazanju programa u memoriju (to je takozvana uninitialized memorija)
eto to je cela pricao extern ;o)
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: extern25.08.2001. u 19:08 - pre 274 meseci
Citat:
predator je napisao:
Ja se izvinjavam na opasci ali mislim da sam ovo pomenuo ?
extern nikad nije setovan na 0 jer on jednostavno kaze da negde postoji symbol sa tim imenom koji ce da se nadje i realocira se sve lepo u odnosu na taj sysmbol.
Zasto je 0 ? Zato sto ti alociras data na bss/data segmentu koji su setovani na 0 po diazanju programa u memoriju (to je takozvana uninitialized memorija)
eto to je cela pricao extern ;o)

Nisam se dobro izrazio...nije setovan na 0 vec je 0 - uglavnom poenta je da nemora da se setuje na 0.

poz.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: extern26.08.2001. u 00:18 - pre 274 meseci
Da moguce da sam ja lose protumacio ;o)
Ok sve jedno resismo i ovaj problem...a sad hint pitanje static funkcija ?

Odgovor : Imate dva obj filea i u jednom static funkciju nju necete moci da pozovete iz drugog obj jel se sysmboli ne exportuju vec ostaju private samo za taj obj file ;o)


[Ovu poruku je menjao predator dana 08-25-2001 u 11:19 PM GMT]
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: extern26.08.2001. u 17:57 - pre 274 meseci
Citat:
predator je napisao:
Da moguce da sam ja lose protumacio ;o)
Ok sve jedno resismo i ovaj problem...a sad hint pitanje static funkcija ?

Odgovor : Imate dva obj filea i u jednom static funkciju nju necete moci da pozovete iz drugog obj jel se sysmboli ne exportuju vec ostaju private samo za taj obj file ;o)


[Ovu poruku je menjao predator dana 08-25-2001 u 11:19 PM GMT]

Pa da isto tako static varijabli nemozes da pristupis iz drugog .obj file-a.

poz.
 
Odgovor na temu

[es] :: C/C++ programiranje :: extern

[ Pregleda: 3526 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.