infoarena

infoarena - concursuri, probleme, evaluator, articole => Probleme externe => Subiect creat de: Chelu David din Iunie 15, 2016, 22:11:24



Titlul: Includeri de Librarii C++
Scris de: Chelu David din Iunie 15, 2016, 22:11:24
Buna ziua, am nevoie de lamurire si o sa trec direct la subiect.
    Stiu ca in C++ pot include librarii, de exemplu:

#include<iostream>
#include<fstream>

    Dar ce ma intereseaza e propriile librarii (fisiere sursa), care pot fi incluse prin nume si adresa

#include"C:\clase.cpp"

    Care contine:

class cerc
{
public:
    cerc();
    int x, y;
};
cerc::cerc()
{
    x=2;
    y=4;
}

    Si acum vine intrebarea: pot sa includ cumva fisiere sursa in functia main() si sa folosesc continutul? Ma gandeam sa adaug anumite clase doar daca e nevoie la un moment dat, cum ar fi:

int main()
{
    int variabila1=1, variabila2=2;
    if (variabila2>variabila1)
    {
        #include"C:\clase.cpp"
        cerc obiect;
        cout<<obiect.x<<' '<<obiect.y;
    }
}


Titlul: Răspuns: Includeri de Librarii C++
Scris de: Pirtoaca George Sebastian din Iunie 16, 2016, 16:50:47
Nu poți face asta (anumite compilatoare nu permit asta). Nici nu are sens (limitezi scopul, dacă pui #include in main sau fix pe prima linie, nu se schimba cu nimic situatia, biblioteca oricum va fi inclusa de către preprocesor). Daca ai multe librarii si nu vrei sa ai executabile foarte mari, poți folosi asta http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html. Desi ma cam indoiesc ca e necesar. Prin urmare, foloseste #include la inceput si cam asta e.  :)

LE: Ideea e ca directivele de preprocesare, precum # include sau #define, sunt rezolvate de către preprocesor, asta înainte de compilare. Deci ca sunt intr-un if sau nu, nu prea contează. Preprocesorul face copy-paste (asta asa, mai pe larg).