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

extern

[es] :: C programiranje :: extern

[ Pregleda: 1237 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Aksic

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



Profil

icon extern24.08.2001. u 00:01
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.
24.08.2001. u 00:01 

Vojislav Milunovic
tata i mama me izdržavaju
Beograd, Srbija

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

Sajt: nonenone.net


Profil

icon Re: extern24.08.2001. u 14:18
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
Oni ostali, ja se raspao...
četničke pesme
get out of ma way you bi***...
Ne čitam pp, ako nekom trebam ima mail : chetnik(na)atlas(tačka)cz
24.08.2001. u 14:18 

kajla
Milorad Janković
Beograd

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



Profil

icon Re: extern24.08.2001. u 15:59
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.
24.08.2001. u 15:59 

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
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
24.08.2001. u 17:02 

Milan Aksic

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



Profil

icon Re: extern24.08.2001. u 18:08
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.
24.08.2001. u 18:08 

kajla
Milorad Janković
Beograd

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



Profil

icon Re: extern24.08.2001. u 20:24
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]
24.08.2001. u 20:24 

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
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
25.08.2001. u 10:54 

Vojislav Milunovic
tata i mama me izdržavaju
Beograd, Srbija

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

Sajt: nonenone.net


Profil

icon Re: extern25.08.2001. u 15:45
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)
Oni ostali, ja se raspao...
četničke pesme
get out of ma way you bi***...
Ne čitam pp, ako nekom trebam ima mail : chetnik(na)atlas(tačka)cz
25.08.2001. u 15:45 

kajla
Milorad Janković
Beograd

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



Profil

icon Re: extern25.08.2001. u 19:08
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.
25.08.2001. u 19:08 

Vojislav Milunovic
tata i mama me izdržavaju
Beograd, Srbija

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

Sajt: nonenone.net


Profil

icon Re: extern26.08.2001. u 00:18
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]
Oni ostali, ja se raspao...
četničke pesme
get out of ma way you bi***...
Ne čitam pp, ako nekom trebam ima mail : chetnik(na)atlas(tačka)cz
26.08.2001. u 00:18 

kajla
Milorad Janković
Beograd

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



Profil

icon Re: extern26.08.2001. u 17:57
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 ne mozes da pristupis iz drugog .obj file-a.

poz.
26.08.2001. u 17:57 

[es] :: C programiranje :: extern

[ Pregleda: 1237 | Odgovora: 10 ]

Postavi temu Odgovori

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