Dev C++ hat Problem mit clrscr();
-
Hallo Leute,
Ich habe seit langem mal wieder programmiert. Dabei ist mir aufgefallen, dass mein Dev C++ Compiler mitclrscr();anscheinend nichts anfangen kann.
Beispiel:#include <stdio.h> #include <conio.h> main() { int x; printf("\n Bildschrim löschen?"); scanf("%i",&x); clrscr(); }Verursacht die Fehlermeldung:
In function 'main'
[LINKER ERROR] undefined reference to 'clrscr'
Id returned 1 exit statusDas sagt mit, dass der Linker ein Problem mit
clrscr();hat, aber wie ich das beheben kann... da steig ich nicht dahinter

Danke im Voraus für alle Antworten
Phynix Firebird
PS: Mein alter Borland C-Compiler hat damit keine Probleme...
-
clrscr ist keine Funktion des C-Standards, sondern stammt aus der conio-Bibliothek. Du hast zwar den Header dafür eingebunden, aber du musst deiner Entwicklungsumgebung noch verklickern, dass gegen die Bibliothek gelinkt werden muss.
Historisch gesehen kam Borland C mit der conio-Bibliothek (was möglicherweise ein Grund ist, warum Borland C auf seiner Plattform so beliebt war), anscheinend wird dabei automatisch gegen die Bibliotheksdatei gelinkt.
-
Und wie kann ich Dev C++ beibringen, dass er die conio.h diesmal mitlinken soll?
Nach meinem Wissensstand bewirkt doch das #include <>, dass der compiler erkennt, was er mitlinken soll...
-
Phynix Firebird schrieb:
Und wie kann ich Dev C++ beibringen, dass er die conio.h diesmal mitlinken soll?
Keine Ahnung. Welche Version von Dev-C++? Ist da denn keine Anleitung dabei/online? Ich verschiebe dich mal in ein passenderes Forum für diese Frage.
Nach meinem Wissensstand bewirkt doch das #include <>, dass der compiler erkennt, was er mitlinken soll...
Compiler != Linker. #include ist eine reine Textersetzung. Im Header stehen nur Signaturen der Funktionen, so dass der Compiler die Richtigkeit deines Codes sicherstellen kann und passenden Maschinencode für den Funktionsaufruf erzeugen kann. Erst der Linker bringt den Maschinencode verschiedener Funktionen zu einem ausführbaren Programm zusammen*. In diesem Fall fehlt ihm die Datei, in der der Maschinencode für die Funktion clrscr zu finden ist.
*: Oder er prüft bloß, ob der Code für das System auffindbar ist und ob alles zusammen passt. Es gibt verschiedene Arten und Weisen, wie ein Linkvorgang vor sich gehen kann.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das Problem war bereits mit den ersten beiden Worten des Thread-Titels klar: " Dev C++" -> "schlechtes Tutorial".
-
Dev C++ bietet die Funktion an, den Sourcecode nicht als .cpp (also C++) sondern als .c (also als Standard C) zu speichern, zu compilieren und zu linken, was ich auch gemacht habe. Somit müsste der Compiler dann wie ein C Compiler und nicht wie ein C++ Compiler agieren.
-
Phynix Firebird schrieb:
Dev C++ bietet die Funktion an, den Sourcecode nicht als .cpp (also C++) sondern als .c (also als Standard C) zu speichern, zu compilieren und zu linken, was ich auch gemacht habe. Somit müsste der Compiler dann wie ein C Compiler und nicht wie ein C++ Compiler agieren.
Und was hat das mit dem Thema zu tun?
-
@Phynix Firebird: du mußt noch die conio.o dazulinken, s. Why can't I use conio.h functions like clrsrc()?
Du kannst dir aber auch mal die Library Improved Console 5 ansehen.
-
Naja, ist anscheinend ein bisschen kompliziert. Gibt es einen anderen Befehl in C (nicht C++), welcher das Gleiche wie clrscr(); bewirkt?
-
Eine Notlösung ist
system("cls"); //Windows system("clear"); //Linuxaus stdlib.h
-
Danke an Alle, die mir beim Lösen des Problems geholfen haben.
Ich denke, mit dem neuen Befehl, wirds auch gehen.
-
volkard schrieb:
Das Problem war bereits mit den ersten beiden Worten des Thread-Titels klar: " Dev C++"
Damit wäre ich vorsichtig. Die aktualisierte Version ist brauchbar.