Guten Tag
Ich habe folgendes Problem: Mein EclipseCDT(Kepler, Ubuntu 13.10 32Bit,
Latitude D610) zeigt mir jedes Mal einen Fehler an, wenn ich versuche
std::cout zu benutzen(dasselbe bei std::cin). Das Problem dabei liegt,
dass ich soweit Anzeige iostream korrekt eingebunden habe, und er
trotzdem meckert. Wenn ich jetzt aus anderen Codes kopiere geht es aber
ab und zu.
Hier mal der Teil des Codes:
1
#include<iostream>
2
3
voidareaofadisk(doubler);
4
voidcapacity(doubler,doubleh);
5
6
intmain(){
7
doubleradius{0.0},high{0.0};
8
std::cout<<"Radius: \n";//von Hier
9
std::cin>>radius;
10
std::cout<<"Höhe: \n";
11
std::cin>>high;//bis Hier
12
areaofadisk(radius);
13
capacity(radius,high);
14
}
Die Fehermeldung ist übrigens: Symbol 'cout' could not be resolved
Dein Code-Beispiel enthält zwar Fehler (wie z.B. fehlender Return-Wert
für main(), die Implementierung von areaofadisk()
und capacity() fehlt um es vollständig übersetzen zu können), aber nicht
bei der Verwendung von cout.
Probiert mal das hier:
1
#include<iostream>
2
3
intmain()
4
{
5
std::cout<<"Test"<<std::endl;
6
return0;
7
}
Wenn das nicht funktioniert, dann liegt es nicht am Code, sondern an
Deiner Installation.
Mark Brandis schrieb:> (wie z.B. fehlender Return-Wert> für main()
Das ist kein Fehler. Wenn die main() kein explizites "return" enthält,
ist der Exit-Code per C++ Standard einfach 0.
Dasselbe Problem, Der Compiler gibt " Nicht definierter Verweis auf
'main'" Aus. Die Meldung Oben ist die Schnellerklärung von Elcipse.
PS: Wo sin die anderen Fehler?
Dr. Sommer schrieb:> Das ist kein Fehler. Wenn die main() kein explizites "return" enthält,> ist der Exit-Code per C++ Standard einfach 0.
Meinetwegen halt kein Fehler, sondern schlampig programmiert. ;-)
12V DC schrieb:> Dasselbe Problem, Der Compiler gibt " Nicht definierter Verweis auf> 'main'" Aus. Die Meldung Oben ist die Schnellerklärung von Elcipse.
Dann ist der Fehler, dass Du hier kein vollständiges Minimalbeispiel
vorstellst, mitsamt der richtigen Fehlermelduing.
Eine einzige Datei, also z.B. main.cpp (und nicht etwa main.c), mit dem
minimalen Quelltext wird ja wohl kaum diesen Fehler aufweisen.
Rolf Magnus schrieb:> 12V DC schrieb:>> double radius{0.0}, high{0.0};>> Ist sowas in aktuellen C++-Dialekten etwa korrekt? Ich hab das noch nie> gesehen.
Ja isses, das ist C++11 Standart.
Mark Brandis schrieb:> Eine einzige Datei, also z.B. main.cpp (und nicht etwa main.c), mit dem> minimalen Quelltext wird ja wohl kaum diesen Fehler aufweisen.
Ich habe den Quellcode von Mark ausprobiert und hatte das gleiche
Problem.
Rolf Magnus schrieb:> Ist sowas in aktuellen C++-Dialekten etwa korrekt? Ich hab das noch nie> gesehen.
Das ist C++11. Damit der Indexer mit C++11 klarkommt, muss man in den
Einstellungen -std=c++11 eingeben.
Mark Brandis schrieb:> Meinetwegen halt kein Fehler, sondern schlampig programmiert. ;-)
Wieso ist das schlampig? 90% der Programme brauchen eh keinen Exit Code,
und für die ist es daher wunderbar einfach gar kein return zu haben.
Dr. Sommer schrieb:> Wieso ist das schlampig? 90% der Programme brauchen eh keinen Exit Code,
Die einzigen Programme, die keinen Exit Code brauchen, sind solche die
auf einem kleinen Mikrocontroller ohne Betrübssystem in einer
Endlosschleife im Kreis laufen :-)
12V DC schrieb:> Ich habe den Quellcode von Mark ausprobiert und hatte das gleiche> Problem.
Dann dürfte es wohl an einer fehlerhaften Projekteinstellung liegen.
Jetz geht es plötzlich ich habe NICHTS gemacht. Aber bei einer neuen
Datei habe ich das Problem sicher wieder...
Ist das die Zeit, die benötigt, um zu impaortiern??
Mark Brandis schrieb:> Die einzigen Programme, die keinen Exit Code brauchen, sind solche die> auf einem kleinen Mikrocontroller ohne Betrübssystem in einer> Endlosschleife im Kreis laufen :-)
Naja, bei GUI-Programmen wie Textverarbeitung etc. fragt keiner nach dem
exitcode.
12V DC schrieb:> Rolf Magnus schrieb:>> 12V DC schrieb:>>> double radius{0.0}, high{0.0};>>>> Ist sowas in aktuellen C++-Dialekten etwa korrekt? Ich hab das noch nie>> gesehen.>> Ja isses, das ist C++11 Standart.
Ich bin erstaunt. Hat das irgendeinen Vorteil gegenüber den üblichen
Schreibweisen
1
doubleradius(0.0),high(0.0);
und
1
doubleradius=0.0,high=0.0;
?
Dr. Sommer schrieb:> Wieso ist das schlampig? 90% der Programme brauchen eh keinen Exit Code,> und für die ist es daher wunderbar einfach gar kein return zu haben.
Ich find's ziemlich unsinnig, in der Sprachdefinition extra eine
Ausnahme für main() zu machen, daß dort (und nur dort) das return
weggelassen werden kann. C++ ist komplex genug, da muß man nicht noch
vollkommen unnötige Ausnahmen definieren.
Dr. Sommer schrieb:> Naja, bei GUI-Programmen wie Textverarbeitung etc. fragt keiner nach dem> exitcode.
Ja, der Aufwand für die Programmierung einer Textverarbeitung steigt
enorm, wenn man dort in main() ein return 0 schreiben muß. ;-)
Rolf Magnus schrieb:> Ich bin erstaunt. Hat das irgendeinen Vorteil gegenüber den üblichen> Schreibweisendouble radius(0.0), high(0.0);> unddouble radius = 0.0, high = 0.0;> ?
In dem Fall nicht, nein. Aber das ist Teil der neuen vereinheitlichten
initialization syntax, die dann Dinge erlaubt wie:
Da guckt das tolle Java oder C dann übrigens blöd...
> Ich find's ziemlich unsinnig, in der Sprachdefinition extra eine> Ausnahme für main() zu machen, daß dort (und nur dort) das return> weggelassen werden kann.
Naja, exit codes sind ein wie gesagt oft nicht genutztes, also
Optionales Feature; warum also jeden Programmierer zwingen einen
anzugeben auch wenn man ihn nicht braucht...
> C++ ist komplex genug, da muß man nicht noch> vollkommen unnötige Ausnahmen definieren.
Oder es spielt dann auch keine Rolle mehr ... :D Die main() ist so oder
so speziell, denn sie erfährt kein Name Mangling, Überladungen, ist
automatisch Entry-Point des Programms.
> Ja, der Aufwand für die Programmierung einer Textverarbeitung steigt> enorm, wenn man dort in main() ein return 0 schreiben muß. ;-)
Immerhin hat es schon Diskussions-Aufwand generiert :o) Kann mich
jedenfalls gerade nicht erinnern, wann ich zum letzten Mal einen exit
code benötigt habe, aber ich kann mich an eine Unzahl an main()-Routinen
erinnern, die ich geschrieben habe, und in der ich mir das return
gespart habe. Die argc,argv -Parameter sind ja auch optional. Ist doch
schön wenn das Minimal-C++-Programm keine unnötigen, selten benutzten
Dinge enthalten muss...
Dr. Sommer schrieb:> Die main() ist so oder so speziell, denn sie erfährt kein Name Mangling,> Überladungen, ist automatisch Entry-Point des Programms.
Das sind aber auch Dinge, die eher nötig sind als ein optionales return.
> Die argc,argv -Parameter sind ja auch optional. Ist doch> schön wenn das Minimal-C++-Programm keine unnötigen, selten benutzten> Dinge enthalten muss...
Gerade beim Minimal-Programm würde ich es aber immer mit angeben, denn
sonst meint der Anfänger, der sich das anschaut, daß ein return immer
optional ist, und man muß ihm extra wieder erklären, daß das nur für den
Spezialfall main() gilt. Und damit ist dann eines der ersten Features
von C++, die er lernt, ausgerechnet eins, das so ziemlich zu den
unwichtigsten der ganzen Sprache gehört.
Dr. Sommer schrieb:> Kann mich jedenfalls gerade nicht erinnern, wann ich zum letzten Mal> einen exit code benötigt habe
Ich habe sie schon oft gebraucht. Auch bei GUI-Programmen, wenn auch
dort nicht für das Programm selbst, aber für einen Code-Generator, der
halt wie üblich über den Exit-Code dem make sagt, ob er erfolgreich war.