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

Upotrba CPP i C fajlova zajedno

[es] :: C++ programiranje :: Upotrba CPP i C fajlova zajedno

[ Pregleda: 872 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 135
81.93.74.*



Profil

icon Upotrba CPP i C fajlova zajedno03.09.2004. u 10:01

Imam neke programe pisane u C-u.
Nedavno sam preradio kompletnu aplikaciju da se kompajlira sa MS C++
Sada imam neki miks CPP fajlova i starih C funkcija.

Negdje sam procitao da C fajlovi moraju da imaju:

extern "C" {
...
...
c kod
...
...
}


Za sada progam radi bez ikakvih vidljivih problema, ali me zanima da li treba da se stavi extern "C" na pocetku C fajlova?

Pozdrav,
Ljubisa
03.09.2004. u 10:01 

Ivan Dimkovic
Ivan Dimkovic
Vice President - Product and Business Development, Ci..
EU

Administrator
Član broj: 13
Poruke: 11793
*.dip.t-dialin.net

Sajt: www.linkedin.com/in/ivand..


Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:17
Extern "C" se stavlja u C++ fajlove, ili u deklaraciji funkcija kako bi se izbegli problemi pri linkovanju sa C fajlovima - naime kod C++ funkcija kompajler ih zavodi kao "mangled names" .

Recimo - u C++

int MojaFunkcija(float a, float b) se belezi i referencira (u razresavanju simbola) kao:

MojaFunkcija@@YAHMM@Z

Ovo govori kompajleru i linkeru o kojim se prosledjenim parametrima radi (vrlo bitno ako recimo klasa ima vise implementacija iste funkcije koje se razlikuju samo po prosledjenim parametrima)

Tako da ako hoces da kombinujes C kod sa C++ kodom, C++ kompajleru moras dati do znanja da je odredjena funkcija C tipa - kako ne bi dobio nerazresene simbole jer C deo koda ne razume "mangled names"

03.09.2004. u 10:17 

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1502
80.93.230.*

ICQ: 60630914


Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:22
nazalost name mangling u c++ bibliotekama je neizbezan :(. koliko mi je poznato ne postoji ni neka standardizacija u name mangling-u, osim neke koje je sun svojevremeno pokusao da nametne. da li neko zna nesto vise o tome (potencijalnoj standardizaciji po pitanju name mangling-a u bibliotekama)?
03.09.2004. u 10:22 

zvrba
The Lord of Chaos

Član broj: 31716
Poruke: 105
*.fina.hr



Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:42
Dovoljno je samo DEKLARACIJE u .h fajlovima staviti unutar extern "C". Obicno ide ovako:

#ifdef __cplusplus
extern "C" {
#endif

int mojafunkcija1(int, float);
/* jos tvojih funkcija */

#ifdef __cplusplus
}
#endif
03.09.2004. u 10:42 

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 135
81.93.74.*



Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:56
OK,

Hvala Vam svima.

Pozdrav,
Ljubisa

03.09.2004. u 10:56 

leka
Dejan Lekić
senior software engineer, 3Developers Ltd.
London, UK

Član broj: 234
Poruke: 2530
*.231.216.81.gus.vf.siwnet.net

Sajt: dejan.lekic.org


Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 17:50
Ako Bog da svi ce usvojiti vec siroko rasprostranjen CodeSourcery-jev C++ ABI, tako da ce to sve biti lepo standardizovano (konacno). Jednom mesecno posetim sajt u vezi C++ ABI-ja i vidim da su iza tog projekta Intel, Amd, Sun, cini mi se i IBM i SGI - ne secam se. Sve u svemu treba pogledati. To ce garant biti u buducnosti obavezan uslov koji svaki proizvodjac C++ kompajlera mora da ispostuje.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
03.09.2004. u 17:50 

Dragi Tata

Član broj: 1958
Poruke: 3899
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 18:39
Od toga naravno nema ništa. Koji će proizvođač da promeni mangling šemu i time prekine kompatibilnost između dve verzije svog kompajlera?
03.09.2004. u 18:39 

[es] :: C++ programiranje :: Upotrba CPP i C fajlova zajedno

[ Pregleda: 872 | Odgovora: 6 ]

Postavi temu Odgovori

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