Forum » Programiranje » [c] knjižnice
[c] knjižnice
slovencl ::
Imam en projekt, ki bi ga rad razdelil na knjižnice, ampak mi niso povsem jasne.
Npr. če imam knjižnico A v kateri moja funkcija kliče tudi funkcijo sin() iz knjižnice math, in knjižnico B, v kateri druga funkcija ravno tako kliče funkcijo sin() iz knjižnice math. Ali bo compiler vedel, da obe knjižnice uporabljata isto funkcijo, ali bo naredil dve kopije sin() funkcije.
Če prav razumem so knjižnice skompajlane samostojno in so potem samo polinkane, se pravi bo program z razdeljenimi knjižnicami daljši, ker bosta v njem dve kopije iste funkcije sin()?
Npr. če imam knjižnico A v kateri moja funkcija kliče tudi funkcijo sin() iz knjižnice math, in knjižnico B, v kateri druga funkcija ravno tako kliče funkcijo sin() iz knjižnice math. Ali bo compiler vedel, da obe knjižnice uporabljata isto funkcijo, ali bo naredil dve kopije sin() funkcije.
Če prav razumem so knjižnice skompajlane samostojno in so potem samo polinkane, se pravi bo program z razdeljenimi knjižnicami daljši, ker bosta v njem dve kopije iste funkcije sin()?
- spremenil: slovencl ()
Randomness ::
Ne, kopija sin funkcije bo samo ena in ta se ne bo nahajala v tvojem programu ampak v knjižnici math. Še več, to bo načeloma tudi edina kopija te funkcije na disku in v pomnilniku, ki si jo bodo delili vsi programi, ki bodo klicali to funkcijo. To je nekako tudi ideja "dinamičnih" knjižnic (dll v windowsih, so v linuxu). Kratica so namreč pomeni shared object.
Seveda to za statične knjižnice ne velja.
Seveda to za statične knjižnice ne velja.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Mi lahko kdo razlozi ta graf?Oddelek: Šola | 2854 (1433) | BorutK-73 |
» | gcc + math.h + -lm problemOddelek: Programiranje | 984 (900) | BigWhale |
» | [C++] zaokroževanje številOddelek: Programiranje | 2309 (1386) | worxer |
» | [Naloga] Eulerjevo številoOddelek: Programiranje | 3102 (2454) | gani-med |
» | c++ header fileOddelek: Programiranje | 848 (807) | Vesoljc |