In C alles ok ; C++ Fehler



  • EDIT: Komisch, doppelt gepostet... Fehler?



  • Warum ist es keine C++ Programm? Sobalt die Datei mit cpp endet wird es doch auch als C++ Code behandelt.
    Aber egal, conio.h ist doch die richtiege Header-Datei?

    Compiler ist der Dev-C++, aber auch der alktuelle von Microsoft wurde mal benutzt.



  • das studio compiliert den c code mit den suffix .cpp wunderbar...

    die _inpw ist mit unterstrich vorneweg bekannt.

    wenn der dev es nicht kann, musst du mal in den entsprechend eingebundenen headern schauen, hier vor allem in der conio.h des devcpp

    wenn sie nicht ähnlich diesem hier aussieht

    (auzug aus dem visual studio 6.0)

    /* Function prototypes */
    
    _CRTIMP char * __cdecl _cgets(char *);
    _CRTIMP int __cdecl _cprintf(const char *, ...);
    _CRTIMP int __cdecl _cputs(const char *);
    _CRTIMP int __cdecl _cscanf(const char *, ...);
    _CRTIMP int __cdecl _getch(void);
    _CRTIMP int __cdecl _getche(void);
    #ifdef  _M_IX86
    int __cdecl _inp(unsigned short);
    unsigned short __cdecl _inpw(unsigned short);
    unsigned long __cdecl _inpd(unsigned short);
    #endif  /* _M_IX86 */
    _CRTIMP int __cdecl _kbhit(void);
    #ifdef  _M_IX86
    int __cdecl _outp(unsigned short, int);
    unsigned short __cdecl _outpw(unsigned short, unsigned short);
    unsigned long __cdecl _outpd(unsigned short, unsigned long);
    #endif  /* _M_IX86 */
    _CRTIMP int __cdecl _putch(int);
    _CRTIMP int __cdecl _ungetch(int);
    

    und die inpw etc.. fehlen, hast dus schwer mit dem ...



  • Hm inder Header-Datei steht nicht wirklich was brauchbares zu _inpw oder _outpw (bzw inpw outpw).
    Werde mal einen Prof mit dem Problem auf die Nerven gehen, vieleicht weiss der rat.

    /* A conio implementation for Mingw/Dev-C++.
    *
    * Written by:
    * Hongli Lai hongli@telekabel.nl
    * tkorrovi tkorrovi@altavista.net on 2002/02/26.
    * Andrew Westcott ajwestco@users.sourceforge.net
    *
    * Offered for use in the public domain without any warranty.
    */

    #ifndef _CONIO_H_
    #define _CONIO_H_

    #include <stdio.h>

    #ifdef __cplusplus
    extern "C" {
    #endif

    #define BLINK 0

    typedef enum
    {
    BLACK,
    BLUE,
    GREEN,
    CYAN,
    RED,
    MAGENTA,
    BROWN,
    LIGHTGRAY,
    DARKGRAY,
    LIGHTBLUE,
    LIGHTGREEN,
    LIGHTCYAN,
    LIGHTRED,
    LIGHTMAGENTA,
    YELLOW,
    WHITE
    } COLORS;

    #define cgets _cgets
    #define cprintf _cprintf
    #define cputs _cputs
    #define cscanf _cscanf
    #define ScreenClear clrscr

    /* blinkvideo */

    void clreol (void);
    void clrscr (void);

    int _conio_gettext (int left, int top, int right, int bottom,
    char *str);
    /* _conio_kbhit */

    void delline (void);

    /* gettextinfo /
    void gotoxy(int x, int y);
    /

    highvideo
    insline
    intensevideo
    lowvideo
    movetext
    normvideo
    */

    void gotoxy(int x, int y);

    void puttext (int left, int top, int right, int bottom, char *str);

    // Screen Variables

    /* ScreenCols
    ScreenGetChar
    ScreenGetCursor
    ScreenMode
    ScreenPutChar
    ScreenPutString
    ScreenRetrieve
    ScreenRows
    ScreenSetCursor
    ScreenUpdate
    ScreenUpdateLine
    ScreenVisualBell
    _set_screen_lines */

    void _setcursortype (int type);

    void textattr (int _attr);

    void textbackground (int color);

    void textcolor (int color);

    /* textmode */

    int wherex (void);

    int wherey (void);

    /* window */

    /* The code below was part of Mingw's conio.h /
    /

    * conio.h
    *
    * Low level console I/O functions. Pretty please try to use the ANSI
    * standard ones if you are writing new code.
    *
    * This file is part of the Mingw32 package.
    *
    * Contributors:
    * Created by Colin Peters colin@bird.fu.is.saga-u.ac.jp
    *
    * THIS SOFTWARE IS NOT COPYRIGHTED
    *
    * This source code is offered for use in the public domain. You may
    * use, modify or distribute it freely.
    *
    * This code is distributed in the hope that it will be useful but
    * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
    * DISCLAMED. This includes but is not limited to warranties of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    *
    * $Revision: 1.4 $
    * $Author: hongli $
    * $Date: 2002/04/26 19:31:25 $
    *
    */

    char* _cgets (char*);
    int _cprintf (const char*, ...);
    int _cputs (const char*);
    int _cscanf (char*, ...);

    int _getch (void);
    int _getche (void);
    int _kbhit (void);
    int _putch (int);
    int _ungetch (int);

    int getch (void);
    int getche (void);
    int kbhit (void);
    int putch (int);
    int ungetch (int);

    #ifdef __cplusplus
    }
    #endif

    #endif /* _CONIO_H_ */



  • nimm einfach nen anderen compiler... der djgpp bietet sich an, oder das studio (gibts auch für schüler und studenten) ....



  • MaSTaH schrieb:

    @codehacker: Nur bei den Standard-Headern aus C sollte man in C++-Code i.d.R. das .h weglassen wenn man ein c davor setzt. Das hat mit Windows nichts zu tun. conio.h ist nicht Standard und deshab das .h dahinter. Ausserdem ist der gezeigte Code C und nicht C++.

    Zu dem Windows, dass wusste ich, wollte es auch löschen, weiß net, hob ich wohl vergessen, wie ich darauf gekommen bin weiß ich selbst nicht mehr.....*schmoll*
    Deinen ersten Satz verstehe ich nicht ganz, was meinst du mit "...wenn man ein c davor setzt.", wenn man ein c wovor setzt oder zeig einfach ein Beispiel.

    Nagut, wenn das mit den Headern so ist, dann wiß ich ja wieder etwas mehr. Habe das halt noch nicht gelesen.

    Was mich aber noch interessieren würde, was kann C++ nicht was C kann? Würde mich einfach mal interessieren. Ich weiß ja das es da unterschiede gibt, aber nicht genau welche?

    Cod-Hacker



  • guck mal in der faq!



  • Das es sich bei diesem Programm nur um eine Vorbereitung für eine Klausur handelt und es in C läuft werde ich es dabei belassen. Dachte nur ihr würdet einen Fehler sehen der mir entgangen war. Trotzdem Danke für eure Anregungen.

    MfG Tom



  • was ich an diesem thread jetzt nicht verstehe:
    tom, welchen compiler benutzt du denn für deine c compilierung?

    du musst einfach sehen, daß die inpw etc.. compilerabhängig sind.. das hat erstmal nix mit c++ oder c zu tun, sondern mit deinem compiler.

    na ja.. egal..



  • Benutze den dev-cpp v.4.9.8.0 .

    weiter wurde mal der altuelle von Microsoft getestet, mit den gleichen Fehler
    (sie gesagt unter *.C geht alles super, aber unter *.cpp Fehler)



  • ok

    habe es für dich mal mit dem visual studio 6.0 compiliert.

    die datei
    test.cpp compiliert einwandfrei und startet ohne fehler...
    keine ahnung, was da schief ist, das studio kann es.

    wenn es dein dev nicht kann, liegt es daran, daß er diese funtkionen nicht unterstützt, aber nicht an c++...
    aber keine ahnung, wie der dev cpp organisiert ist, hast du die datei denn dort mal mit c compiliert?

    also wie gesagt: c++ hat damit nix zutun, meine cl.exe schluckt den code 😉



  • frage: hast du alle include verzeichnisse richtig gesetzt ? daran könnte es liegen das er nen header nicht findet ..

    im vs studio geht das unter Extras -> optionen -> verzeichnisse ..

    mfg Wudu



  • Die Verzeichnisse stimmen. Es wird wohl ein Fehler im Kompiler sein



  • hallo

    das ist kein fehler im compiler.. nur lass dich auf die tatsache ein, daß alle compiler, die was auf sich halten, den standard fahren, aber alles über den standard hinaus ist oft compilerspezifisch.

    mein djgpp kann sowas wie du da oben machen willst (mit ein paar anderen funktionsaufrufen), das studio kann es so wie oben, wenn es der devcpp nicht kann, liegt es an der ausrichtung des compilers.
    die conio.h kann unterschiedlich aussehen, denn: sie ist KEIN standard.

    nimm einfach eine schülerversion des studios, dann funzt dein programm.

    bye 😉


Anmelden zum Antworten