problem mit der bibliothek dos.h



  • ich hoffe das wurde hier noch nicht besprochen, wenn ja bitte nur den link darauf posten; über die suchfunktion hatte ich nichts gefunden.
    wenn das hier das falsche forum ist bitte ins richtige verschieben, danke.

    ich möchte aus der bibliothek dos.h die funktion delay() nutzen.
    mein compiler: borland c++ 5.02
    die bibliothek dos.h existiert und es exsitiert in dieser bibliothek auch ein eintrag für die funktion delay().
    allerdings wird sie nicht definiert.
    der eintrag sieht so aus:

    #if !defined(_Windows) || defined(__DPMI16__) || defined(__DPMI32__)
    void _RTLENTRYF delay(unsigned __milliseconds);
    #endif
    

    wenn ich das so compiliere meldet der compiler richtig das delay() nicht definiert wurde. tue ich dies von hand über die zeile

    #define delay(unsigned)
    

    meckert zwar der compiler nicht, aber das programm ignoriert die funktion vollkommen, sprich es hat die selbe wirkung wie wenn ich sie raus lasse.
    beim erstellen der define zeile habe ich mich an der funktion sleep orientiert, welche einwandfrei funktioniert.
    so: wo liegt der fehler?
    besonders komisch: in der borland hilfe gibt es quellcode zum testen der funktion delay(), welcher natürlich auch nicht funktioniert. hatte eigentlich gedacht der quellcode sei dazu da schnelle zu testen wie es geht, als beispiel das funktioniert und nicht das man erst auf die suche geht: wie muss die bibliothek eigentlich aussehen...

    wie kann ich das nun beheben?
    ich bräuchte die funktion ziemlich dringen, oder halt eine andere die pausen i millisekunden unterstützt. das ganze soll für eine konsolenanwendung herhalten.

    vielen dank schon mal!

    ciao



  • nimm Sleep() aus windows.h

    #defines sind praeprozessordirektiven. dein define ist unfug, weil du damit garnichts erreichst.



  • vielen dank, damit funktioniert es.
    wie müsste die define zeile dann aussehen? bzw. der ganze komplex zum definieren der funktion delay() ?
    ich hab das abgekupfert von der sleep funktion, die funktioniert mit der methode...
    würde mich jetzt nur so interessieren.

    ciao



  • ich erklaers dir nochmal.
    defines sind teil des praeprozessors. mit ihnen wird einfache textersetzung durchgefuehrt. mit defines bekommst du keine funktionen hin. jedenfalls keine echten. sie sind eine art makro.

    das koennte gehen:

    #define delay(n) Sleep(n)

    wobei hier einfach jedes vorkommen von "delay" durch "Sleep" ersetzt wird und du im grunde genauso gut Sleep() nehmen kannst, weil es haargenau das gleiche ist.

    [flame]
    ok, und weil du mich jetzt so frustriert hast, sag ich einfach mal "RTFM on preprocessor directives and defines".

    ich erwarte von dir eine antwort auf folgende fragen:
    wieso muss ich dir dinge erklaeren, die du genauso gut irgendwo nachlesen kannst?
    wieso benutzt du dinge (damit meine ich das define), ohne einen hauch einer ahnung zu haben, was es ueberhaupt ist? wieso informierst du dich nicht?

    ein forum ist fuer probleme da, die man alleine nicht loesen kann. dein problem wuerde nicht einmal existieren, wenn du selbst recherchiert haettest.

    (ich weiss, dass es nicht fucking nice ist, einen neuling zu flamen. aber hey, ich bin ein mensch und keine suchmaschine. er hat es hier mit menschen zu tun, die ihr gehirn gefordert wissen wollen. es gibt extra leute, die sich seiner probleme annehmen. die heissen lehrer und werden bezahlt, geduldig zu sein. ich mach das hier unentgeltlich in der hoffnung, etwas fuer mich selber zu gewinnen.)
    [/flame]


Anmelden zum Antworten