[C++] include Problem

V1tzl1

Lt. Junior Grade
Registriert
Sep. 2004
Beiträge
384
Hallo, kaum hab ich mir den Compiler runtergeladen, stellen sich auch schon die ersten Fragen (Na das geht ja gut los :D)

Ich wollte mir mit dem neuen Compiler (Visual C++ Toolkit von MS) gleich mal nen Hallo Welt Proggie schreibtn, jedoch versagt mein Compiler schon in der ersten Zeile beim Laden der iostream.h ichhoffe ihr könnt mir sagen woran das liegt
Code:
#include <iostream.h>

void main()
 {
  cout << "Halllo Welt!"" << endl;
 }
 
Gehts eventuell mit:

Code:
#include <iostream>

int main() {

  cout << "Hello, World!" << endl;

  return 0;

}
 
Zuletzt bearbeitet:
Die Datei heißt nicht mehr iostream.h, sondern nur noch iostream. Ersteres ist ein Relikt aus der Zeit, bevor 1998 der offizielle C++ Standard verabschiedet wurde und wird immer weniger unterstützt.

Versuch mal das hier:
Code:
#include <iostream>

using namespace std; // wichtig

int main() {

  cout << "Hello, World!" << endl;

  return 0;

}

Sollte es dennoch zu dem Problem führen, sind eventuell irgendwelche Pfade noch nicht richtig gesetzt (Umgebungsvariablen etc prüfen) oder man muss dem Compiler sagen, wo er die Standard-Includes findet (musst Du wohl oder übel das Handbuch bemühen).
 
Pfade richtig setzen und Handbuch bemühen... hätte ich schon längst gemacht, wenn es denn ein Handbuch oder ähnliches gäbe das einzige was microshit mir zu dem compiler mitgeliefert hat ist kaufen sie VisualC++ Toolkit 2003.NEt für $99999$ ($$$$$):freak:

Hab der Hinweis mit dem neuen Namen iostream war wohl richtig, da meckert er jetz nicht mehr, jetzt hab ich nur 100 errors mit dem Wortlaut missing '{' before ':'
der Code schaut jetzt wie folgendermaßen aus
Code:
#include <iostream>

using namespace std;

int main()
 {
  cout << "Halllo Welt!"" << endl;
  return 0;
 }
und 100 mal kann das { zeichen wohl nicht fehlen ...
 
Einmal Gänsefüsschen zuviel hinter "Hallo Welt!"
Mach einmal weg, dann klappt es.
 
Erst lesen, dann posten.

Lösch mich :)
 
Hmm... man müsste Posts löschen können...
 
Zuletzt bearbeitet:
Hallo V1tzl1,

nicht gleich verzweifeln. Du hast immerhin Compiler und GUI umsonst bekommen und dann noch schimpfen das keine Handbücher dabei sind?

Die ersten Schritte mit C/C++ haben mich auch zur Verzweiflung getrieben. Das liegt aber nicht an der Sprache sondern an einem selber.

Besorg Dir ein gutes Buch und geh die Sache langsam an.

MfG

Arnd
 
Hi hab das zweite Ausrufezeichen gelöscht (war klar das das da nich hingehört).
Allerdings ändert das nichts an der Fehler meldung "C:\Programms\Visual C++\include\cstdlib(19) : error C2143: syntax error : missing '{' before ':'"

Hier mal die Datei ctdlib (obwohl ich an der nichts verändert habe scheint Sie den Fehler hervorzurufen)
Code:
// cstdlib standard header
#pragma once
#ifndef _CSTDLIB_
#define _CSTDLIB_
#include <yvals.h>

#ifdef _STD_USING
 #undef _STD_USING
  #include <stdlib.h>
 #define _STD_USING

#else /* _STD_USING */
 #include <stdlib.h>

 #if _GLOBAL_USING
_STD_BEGIN
using ::size_t; using ::div_t; using ::ldiv_t;

using ::abort; using ::abs; using ::atexit;
using ::atof; using ::atoi; using ::atol;
using ::bsearch; using ::calloc; using ::div;
using ::exit; using ::free; using ::getenv;
using ::labs; using ::ldiv; using ::malloc;
using ::mblen; using ::mbstowcs; using ::mbtowc;
using ::qsort; using ::rand; using ::realloc;
using ::srand; using ::strtod; using ::strtol;
using ::strtoul; using ::system;
using ::wcstombs; using ::wctomb;
_STD_END
 #endif /* _GLOBAL_USING */

#endif /* _STD_USING */
#endif /* _CSTDLIB_ */

/*
 * Copyright (c) 1992-2002 by P.J. Plauger.  ALL RIGHTS RESERVED.
 * Consult your license regarding permissions and restrictions.
 V3.13:0009 */
 
Höchst unwahrscheinlich, dass in der Datei ein Fehler vorliegt. Immerhin scheinen die include-Pfade richtig zu sein, denn die Datei wird gefunden.

Zeile 19 ist using ::abort; using ::abs; using ::atexit; und das sieht alles okay aus.

Hast Du die Endung der Datei .cpp genannt? Hast Du evtl. irgendeine exotische Zeichen-Kodierung beim Speichern ausgewählt?

Versuch vielleicht einfach nochmal den Compiler neu zu installieren, vielleicht hilft das ja.
 
Also hab die Dateiendung von .c auf .cpp geändert, jetzt compiliert er mir die Datei zwar jedoch nur unter unmengen von warnungen die angeblich alle aus irgendwelchen include dateien stammen, die ich nie eingebunden habe .
Wenn ich meine .exe Datei starte schließt sie sich sofort wieder. wähle ich sie per console an bleibt sie geöffnet wie kann ich erreichen dass sie auch so aufbleibt?
 
Funktioniert und dank des Dev C++ sind auch die Warnungen weg.
Vielen Dank an alle und bis bald (wird ja sicher nicht die letzte Frage gewesen sein)

MfG V1tzl1
 
system( "PAUSE") ist nicht gut. Zum einen sollte man die system-Funktion nie benutzen, da sie viele Risiken birgt. Andererseits funktioniert das nur unter Windows.

Folgendes anstatt dem system-Aufruf verwenden und Du bist fein raus. Dann kannst Du das Programm mir einem Druck auf Enter schließen. Eine bessere Möglichkeit, die platformunabhängig und standardkonform ist, gibt es nicht.
Code:
#include <iostream>

using namespace std;

int main()
{
  cout << "Hello, World!" << endl;

  cin.ignore( cin.rdbuf()->in_avail(), 0);
  cin.get();
  return 0;
}
 
okay werd ich mir gleich angewöhnen.
Aber das mit dem Plattform unabhängig peil ich nich .exe Dateien laufen doch eh nur unter Windows oder?
 
Hallo,

wenn man das ganze noch in ein

#ifdef _DEBUG
#endif

setzt, hat man während des debuggens den Komfort und die fertige Release Exe zeigt dieses Verhalten nicht :-).
Oder möchte jemand bei Programmende wirklich immer Enter drücken?

Plattformunabhängig ist schon sehr sinvoll. Es kann ja mal vorkommen das Dein Code auch auf Linux laufen soll.

Das ist bei GUI Sachen zwangsweise nicht möglich sofern man nicht QT oder ähnliches benutzt.
Aber Logik und Algorithmen sollten schon so programmiert sein das sie Standards entsprechen.

MfG

Arnd
 
Zuletzt bearbeitet:
stimmt solch ein einfaches programm kannst du aber auch z.B. unter linux kompilieren , hast dann keine exe mehr. Bei komplizieteren geht es natürlich auch , z.B. Qt

7H3 N4C3R hat aber Recht, habe nicht groß drüber nachgedacht, da ich wusste das es unter windows läuft und es ja nur zum ausprobieren ist. Aber wie heißt es so schön wenn schon denn schon :)

edit: zu spät
 
Zuletzt bearbeitet:
Wie gesagt werds mir angewöhnen, war ja nur ne interessens Frage
aber wenn ich
#ifdef _DEBUG
#endif
mit einbinde erstellt er mir erst gar keine Quelldatei.

Hab auch nicht wirkich verstanden was das bewirken soll
 
7H3 N4C3R schrieb:
Die Datei heißt nicht mehr iostream.h, sondern nur noch iostream. Ersteres ist ein Relikt aus der Zeit, bevor 1998 der offizielle C++ Standard verabschiedet wurde und wird immer weniger unterstützt.


Fuer eigene Header verwendet man in der Regel dennoch *.h. Und das sein Compiler die iostream.h nicht findet liegt daran das sie nicht in der C Bibliothek existiert, und noch nie existiert hat.

Mal so nebenbei. ;)
 

Ähnliche Themen

Zurück
Oben