#include <stdio.h> zickt bei BDS2006



  • Ich versuche gerade, die Irrlicht Engine im BDS2006 flott zu bekommen. Der Code ist allgemein schön standardkonform; trotzdem hatte ich hatte zwar mit Problemen gerechnet, aber nicht mit der guten <stdio.h>!

    Ein Ausschnitt aus der Borland-eigenen "stdio.h":

    int       _RTLENTRY _EXPFUNC snprintf(char * __buffer, _SIZE_T __nsize,
                                     const char * __format, ...);
    int       _RTLENTRY _EXPFUNC snwprintf(wchar_t * __buffer, _SIZE_T __nsize,
                                     const wchar_t * __format, ...);
    #ifndef __STDC__
    int       _RTLENTRY _EXPFUNC _snprintf(char * __buffer, _SIZE_T __nsize,
                                     const char * __format, ...);
    int       _RTLENTRY _EXPFUNC _snwprintf(wchar_t * __buffer, _SIZE_T __nsize,
                                     const wchar_t * __format, ...);
    #endif
    

    Die letzte Zeile (vor dem endif) bremst den Compiler aus. Es gibt die Meldung:

    [C++ Fehler] stdio.h(219): E2337 Nur eine aus einer Gruppe von überladenen Funktionen darf "C" sein
      Vollständiger Parser-Kontext
        COpenGLDriver.cpp(6): #include C:\SDK\irrlicht-1.2\source\Irrlicht\COpenGLDriver.h
        COpenGLDriver.h(9): #include C:\SDK\irrlicht-1.2\source\Irrlicht\CNullDriver.h
        CNullDriver.h(8): #include C:\SDK\irrlicht-1.2\include\IVideoDriver.h
        IVideoDriver.h(10): #include C:\SDK\irrlicht-1.2\include\ITexture.h
        ITexture.h(12): #include C:\SDK\irrlicht-1.2\include\irrString.h
        irrString.h(11): #include c:\programme\borland\bds\4.0\include\stdio.h
        stdio.h(28): namespace std
    

    Hat jemand schon einmal solch ein Problem mit einer Standardbibliothek gehabt?



  • Hi,

    eigentlich ist mir die Frage zu hoch...... kanns mir trotzdem nicht verkneifen.

    stdio.h(28): namespace std
    ist der Auslöser, weshalb ich was dazu sage.

    vielleicht hilft es wenn du bei den vielen
    #includes ..... unten dazu schreibst.

    using namespace std;
    

    Hoffe aber das dir auf diese Frage jemand eine richtige Erklärung geben kann.
    Man will ja dazu lernen 🙂

    Grüsse (wahrscheinlich hast du die Zeile selber schon dazu geschrieben)



  • Hallo,

    <stdio.h> ist veraltet und sollte nicht mehr genutzt werden. Standardkonform wäre <cstdio> und da liegt auch alles im Namespace std. Ich könnte mir vorstellen das hier beide inkludiert sind, und das die Probleme hervorruft.


Anmelden zum Antworten