STL in C verwenden?



  • Ist es möglich die STL in einem C-File zu verwenden?

    test.c:

    #include <stdlib.h>
    #include <vector>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	vector<int> n_vector;
    	return 1;
    }
    

    So geht´s mal nicht.



  • die STL wurde mit Sprachfeatures aus C++ geschrieben (z. B. Templates) die es in C einfach nicht gibt. Also nein, du kannst die STL in reinen C Programmen nicht verwenden.



  • du könntest z.b. sowas verwenden: http://sglib.sourceforge.net/
    🙂



  • bedeutet das dann, dass ich ganz grundsätzlich keine Chance habe, aus einem C-Programm heraus C++ Bibliotheken zu verwenden, konkret denke ich z.B. an die xerces-c Bibliotheken des Apache Projekts (http://xerces.apache.org/).



  • Darf man fragen wozu das gut sein soll ?
    Benutz doch gleich ne *.cpp Dateierweiterung und nen C++ Compiler.

    Du könntest aber auch deine C++ Funtionen 'C-kompatibel' machen.
    Prototypen deklarieren, die auch in C erlaubt sind:

    #include <string>
    #include <iostream>
    using namespace std;
    extern "C" void test()
    { 
    	string str("Hello C");
    	cout << str << endl;
    }
    

    Die obige Funktion lässt sich z.B. als statische Bibliothek speichern. Die kannst du dann aus deinem C Programm aufrufen.



  • B.B. schrieb:

    ...
    Die obige Funktion lässt sich z.B. als statische Bibliothek speichern. Die kannst du dann aus deinem C Programm aufrufen.

    Naja, speichern ist schon doof beschrieben. Kompilieren trifft das schon eher. 🙂



  • "wozu ist das gut". Naja, ist halt nicht grüne Wiese, sondern ein existierendes ANSI-C Projekt und da muss jetzt ein neue Komponente dazu, die unter anderem Daten aus einem XML File parsed, die im "Alt" C-Programm verarbeitet werden.
    Den Tipp mit der Bibliothek probiere ich aus. Danke!



  • Torben schrieb:

    "wozu ist das gut". Naja, ist halt nicht grüne Wiese, sondern ein existierendes ANSI-C Projekt und da muss jetzt ein neue Komponente dazu, die unter anderem Daten aus einem XML File parsed, die im "Alt" C-Programm verarbeitet werden.

    es gibt auch ohne ende in C geschriebene xml-parser.
    🙂


Log in to reply