Probleme mit Typedef



  • Hi, ich habe ein kleines problem.

    und zwar habe ich in einem c programm eine typedef funktion

    typedef long __int64, long int;
    typedef unsigned __uint64, long long int;

    Von dem c Programm habe ich ein lib file und eine header datei ( in der header steht auch der typedef )

    Diese lib muß ich jetzt in ein c++ programm einbinden. das einbinden selber hat auch so weit geklappt, nur daß ich beim kompilieren folgende fehler bekomme:

    d:\malinowski\vubdrucker2\chdl.h(41) : error C2632: 'long' followed by '__int64' is illegal
    d:\malinowski\vubdrucker2\chdl.h(41) : warning C4091: 'typedef ' : ignored on left of 'long' when no variable is declared
    d:\malinowski\vubdrucker2\chdl.h(41) : error C2143: syntax error : missing ';' before ','
    d:\malinowski\vubdrucker2\chdl.h(41) : error C2059: syntax error : ','
    d:\malinowski\vubdrucker2\chdl.h(42) : error C2632: 'long' followed by 'long' is illegal
    d:\malinowski\vubdrucker2\chdl.h(42) : warning C4518: 'long ' : storage-class or type specifier(s) unexpected here; ignored

    kann mir jemand sagen wie ich diese typedef umändern muß, damit sowohl die lib keinen ärger macht, aber es auch unter c++ funktioniert ??

    Gruß



  • mache erstmal das kommer weg, dann kann man weiter machen



  • Original erstellt von joerghamster:
    **
    und zwar habe ich in einem c programm eine typedef funktion

    typedef long __int64, long int;
    typedef unsigned __uint64, long long int;
    **

    Das ist Müll, auch in C. Ich nehm an, du meinst eigentlich:

    // gibts in Standard-C++ nicht, aber vielleicht kanns dein Compiler
    // ... ansonsten ist das C99
    typedef long long int __int64;
    typedef unsigned long long int __uint64;
    

    Von den Bezeichnern __int64 und __uint64 würd ich abraten, da du damit in den Namensraum des Compilers eindringst (und beim vc++ auf die Nase fällst). Übrigens ist typedef keine Funktion.



  • sorry, hab einen versuch von mir gepostet 😞 man sollte schon aus der richtigen datei kopieren

    typedef long long int __int64;
    typedef unsigned long long int __uint64;

    so steht es in der original header Datei. und so wird es auch in der lib dazu weiterverwendet. das ist ja mein problem.

    Gruß



  • Die Fehlermeldungen passen nicht dazu. Gib dir mal ein bisschen Mühe beim Fragenstellen ...



  • ok, dann eben nocheinmal die fehlermeldungen ( hab ich natürlich auch aus der falschen version . . . )

    d:\malinowski\vubdrucker2\chdl.h(41) : error C2632: 'long' followed by 'long' is illegal
    d:\malinowski\vubdrucker2\chdl.h(41) : error C2632: 'long' followed by '__int64' is illegal
    d:\malinowski\vubdrucker2\chdl.h(41) : warning C4091: 'typedef ' : ignored on left of 'long' when no variable is declared
    d:\malinowski\vubdrucker2\chdl.h(42) : error C2632: 'long' followed by 'long' is illegal

    Ich hoffe ihr übt ein wenig nachsicht und könnt mir trotzdem helfen 🙄



  • ich hasse es ja, mich selbst zu zitieren:

    Von den Bezeichnern __int64 und __uint64 würd ich abraten, da du damit in den Namensraum des Compilers eindringst (und beim vc++ auf die Nase fällst)



  • hallo, daß is der header von ner lib datei und ich hab noch nicht einmal eine ahnung was __int64 und des andere machen, deshalb frag ich doch.

    außerdem macht er ja beim

    'long' followed by 'long'

    das problem. ich kann es gerne weglassen, aber dann sind die fehlermeldungen immer noch da ( bis auf die 2 das __int64 betreffende )

    😕 😕



  • Dann ist der Header eben nicht für den Visual C++ gedacht. Kommentier die beiden Zeilen doch mal aus, die machen eh nix, was der VC++ nicht schon so könnte.



  • Wie wärs mit nem

    #ifndef _MSVC   // Ich meine So hies das
    typedef ...
    #endif
    


  • Ich würde eher sagen:

    #ifndef _MSC_VER // usw.
    


  • Ich war mir eben nicht sicher, wie das Ding heißt. Ich benutze diesen Compiler zu selten.



  • Original erstellt von joerghamster:
    **ok, dann eben nocheinmal die fehlermeldungen ( hab ich natürlich auch aus der falschen version . . . )

    d:\malinowski\vubdrucker2\chdl.h(41) : error C2632: 'long' followed by 'long' is illegal
    d:\malinowski\vubdrucker2\chdl.h(41) : error C2632: 'long' followed by '__int64' is illegal
    d:\malinowski\vubdrucker2\chdl.h(41) : warning C4091: 'typedef ' : ignored on left of 'long' when no variable is declared
    d:\malinowski\vubdrucker2\chdl.h(42) : error C2632: 'long' followed by 'long' is illegal

    Ich hoffe ihr übt ein wenig nachsicht und könnt mir trotzdem helfen 🙄**

    Weil "long" ein reserviertes Wort ist?



  • Einige Compiler biete ähnlich wie C einen Typ Namens long long.
    Aber wie gesagt sollte ein

    #ifndef _MSC_VER
    typedef ...
    #endif
    

    das Problem lösen.


Anmelden zum Antworten