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

Upotrba CPP i C fajlova zajedno

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

[ Pregleda: 2398 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Upotrba CPP i C fajlova zajedno03.09.2004. u 10:01 - pre 238 meseci
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
 
Odgovor na temu

Ivan Dimkovic

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



+7169 Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:17 - pre 238 meseci
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"

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
80.93.230.*

ICQ: 60630914


+1 Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 10:22 - pre 238 meseci
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)?
 
Odgovor na temu

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 - pre 238 meseci
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
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

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

Hvala Vam svima.

Pozdrav,
Ljubisa

 
Odgovor na temu

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

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

Sajt: dejan.lekic.org


+2 Profil

icon Re: Upotrba CPP i C fajlova zajedno03.09.2004. u 17:50 - pre 238 meseci
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
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

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

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

[ Pregleda: 2398 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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