Habe eine Frage zu Microsoft Visual C++ 2008 Express Edition.

Fruchtzwerg1994

Lt. Junior Grade
Registriert
Feb. 2008
Beiträge
414
Hallo,

wie kann ich auf C umstellen weil jetzt ist nämlich das C++ eingestellt.

Weil ich bis lang nur C programmieren kann und Microsoft Visual C++ 2008 Express Edition anzeigt das es "int" nicht unterstütz.
 
int ist auch ein Schlüsselwort in C++. Du hast irgendwas falsch gemacht.

"Auf C umstellen" geht so: Einfach eine Datei mit Endung .c ins Projekt einfügen.
 
Das kann man aber wo einstellen unter Extras/Optionen/...?

Das mit der Datein Endung .c ist mir zu umständlich.
 
Was ist daran bitte umständlich? Wenn du ein Projekt erstellst, musst du doch mit irgend einer Sourcedatei anfangen. Die nennst du dann schmonses.c und fertig ists.
 
Ja ist mir bewusst. Aber ich will wissen wie man C einstellt unter Extras/Optionen/?
 
Wieso sollte man soetwas tun wollen/können? Damit die C++ Syntax nicht vorhanden ist?

Du kannst dein C programmieren ohne irgendwas umzustellen. Das einzige was evtl. C nicht mag sind .cpp Dateien, aber die kannst du wie asdfman schon sagte, einfach in .c umbenennen und alles ist wunderbar.

Lesen, ausprobieren, schreiben. In dieser Reihenfolge anzuwenden.
 
Vielleicht will er die IDE benutzen, um C Code zu erzeugen und zu debuggen, die später auf einer Umgebung übersetzt werden muss, die nur einen C-Compiler zur Verfügung stellt...

Bei Projekt-Optionen(Alt+F7)/Compiler müsste es doch soetwas geben, oder?
 
1.) Wieso sollte ein reiner C Compiler (sofern es so etwas noch gibt) mit .cpp Dateien Probleme haben. Damals zu Unix Zeiten hat noch keiner gewusst, was überhaupt Dateiendungen sind und zu was man das braucht. Und selbst wenn es Probleme macht, kann man die Dateien immer noch umbenennen.

2.) C++ ist eigentlich vollständig abwärtskompatibel zu C. Nur einige Feinheiten sind anders, die aber mehr von Compiler zu Compiler unterschiedlich sind z.B. muss fressen manche Compiler kein void main mehr, aber das wurde soviel ich weiß sowieso irgendwann festgelegt, dass das int main heißen muss. Das schlimmste, was dir passieren kann ist, dass du irrtümlich ein paar C++ Features verwendest z.B. den new Operator statt malloc, aber nachdem es eh fast keine reinen C Compiler mehr gibt, ist das eigentlich egal.
 
2.) C++ ist eigentlich vollständig abwärtskompatibel zu C.
Falsch. C++ ist eine eigenständige Sprache die vor Urzeiten mal aus C hervorgegangen ist
und mittlerweile weniger und weniger damit zu tun hat.

Um mich mal selbst zu zitieren:
Code:
int main(void) {
    int new, class = 0;
    new = class;
    return new;
}

Ein C++ Compiler wird dir hier massenweise Fehler schmeißen, obwohl es völlig
gültiger C-code ist. Ein reiner C Compiler (von denen es zahlenmäßig mehrere
Größenordnungen mehr gibt als C++ Compiler) hat selbstverständlich überhaupt
keine Probleme damit.

asdf@localh0rst ~/src $ gcc -Wall -pedantic -o daubase daubase.c
asdf@localh0rst ~/src $ g++ -Wall -pedantic -o daubase daubase.c
daubase.c: In function ‘int main()’:
daubase.c:2: error: expected unqualified-id before ‘new’
daubase.c:3: error: expected type-specifier before ‘=’ token
daubase.c:3: error: expected primary-expression before ‘class’
daubase.c:3: error: expected `;' before ‘class’
daubase.c:4: error: expected type-specifier before ‘;’ token
daubase.c:4: error: invalid conversion from ‘int*’ to ‘int’

€: Andere -- noch lachhaftere -- Behauptungen behandle ich mal nicht.
Betrachte einfach dein komplettes Post als völligen Murks.
 
Zuletzt bearbeitet:
Was muss ich für einen komischen C++ Compiler (VS .NET 03) haben, der bei deinem "C-Code" keinen Compilerfehler auswirft. :freak:

Um das ganze etwas zu Belegen: Wikipedia
...und in C geschriebene Programme können in der Regel ohne große Anpassungen in C++ übernommen werden.

Soll ich dir übrigens aus meiner Sicht sagen was lächerlich ist? Seine eigene Behauptung aus Prinzip über die eines Anderen stellen, noch schnell ein paar abwertende Worte einbauen, denn wer außer man selbst kann denn sonst recht haben? :rolleyes:

Es antwortet hier keiner, weil er Unsinn verzapfen will, sondern weil das sein Wissensstand nach bestem Gewissen ist. (Zumindest bis jetzt in diesem Thread)
 
Was muss ich für einen komischen C++ Compiler (VS .NET 03) haben, der bei deinem "C-Code" keinen Compilerfehler auswirft.

Einen kaputten:
http://c-faq.com/misc/cplusplus.html
Also, every keyword in C++ which is not a keyword in C is available in C as an identifier; C programs which use words like class and friend as ordinary identifiers will be rejected by C++ compilers.

Ich gehe davon aus, dass der Microsoft Compiler irgend eine Heuristik benutzt,
um zu erraten, ob er C oder C++ übersetzen soll. In der Regel geht sowas schief.

€: Visual Studio 2008 macht es richtig:
Compiling...
test.cpp
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(2) : warning C4091: '' : ignored on left of 'int' when no variable is declared
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(2) : error C2143: syntax error : missing ';' before 'new'
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(2) : error C2059: syntax error : ','
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(2) : error C2332: 'class' : missing tag name
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(3) : error C2059: syntax error : '='
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(3) : error C2332: 'class' : missing tag name
c:\dokumente und einstellungen\yxcv\eigene dateien\visual studio 2008\projects\cpptest\cpptest\test.cpp(4) : error C2059: syntax error : ';'
Build log was saved at "file://c:\Dokumente und Einstellungen\yxcv\Eigene Dateien\Visual Studio 2008\Projects\cpptest\cpptest\Debug\BuildLog.htm"
cpptest - 6 error(s), 1 warning(s)
 
Zuletzt bearbeitet:
Fruchtzwerg1994 schrieb:
wie kann ich auf C umstellen weil jetzt ist nämlich das C++ eingestellt.

Weil ich bis lang nur C programmieren kann und Microsoft Visual C++ 2008 Express Edition anzeigt das es "int" nicht unterstütz.
Da hast du vermutlich etwas falsch verstanden. C++ erlaubt kein implizites int. C seit C99 übrigens auch nicht mehr. Auch wenn dies von etlichen Compilern immer noch unterstützt wird.
Code:
main(void)
{
    return 0;
}
Das wird zB in C++ nicht funktionieren.

Als Tipp, schreibe jeden Typ explizit dazu. Das vermeidet solche Probleme am effektivsten.
Eine Quelldatei explizit für C oder C++ zu übersetzen, erreichst du beim MSC jedenfalls mit den Flags /Tc und /Tp.

Spartaner117 schrieb:
Was muss ich für einen komischen C++ Compiler (VS .NET 03) haben, der bei deinem "C-Code" keinen Compilerfehler auswirft. :freak:
Dann machst du entweder etwas falsch oder kompilierst explizit C. Die aktuelle 15er Version des MSC bringt jedenfalls genug Fehler.
Das Beispiel von asdfman ist allerdings trotzdem nicht ausschlaggebend. Dass C++ Schlüsselwörter für Bezeichner in C++ zu Fehlern führen, sollte eigentlich klar sein. Die wenigen Inkompatibilitäten liegen an ganz anderen Stellen, wie zB VLAs oder implizite void-Zeiger Umwandlung.
 
asdfman schrieb:
Um mich mal selbst zu zitieren:
Code:
int main(void)
{
    int new, class = 0;
    new = class;
    return new;
}

Ein C++ Compiler wird dir hier massenweise Fehler schmeißen, obwohl es völlig
gültiger C-code ist. Ein reiner C Compiler (von denen es zahlenmäßig mehrere
Größenordnungen mehr gibt als C++ Compiler) hat selbstverständlich überhaupt
keine Probleme damit.

Wenn man so blöd ist und solche Namen als Variablenbezeichner nimmt, der ist wirklich selbst schuld. Ich würde auch nie auf die Idee kommen eine Variable Int, boolean oder shared taufen, auch wenn das gerade kein Schlüsselwort in der aktuellen Sprache ist. Das ist kein Fehler des Compilers, sondern Schlamperei des Users und ein guter Compiler sollter meiner Meinung nach solchen Nonsense so gut wie möglich unterbinden und nicht wie ein Browser doch versuchen, irgendetwas da rein zu interpretieren.

Es hat schon mehrere neuere Standards für C gegeben und C++ ist eher als eine solche Erweiterung anzusehen.

Es hat z.B. auch noch alte C Compiler gegeben, die keine // Kommentare unterstützen.

Was die reine Anzahl an Compiler her nimmt, so mag das stimmen.
Wenn man nur die Anzahl an brauchbaren und vor allem aktuellen Compilern her nimmt, dann schaut das schon anders aus und wenn man prozentuell schaut, wie viel Arbeit noch in die Entwicklung von C Compilern gesteckt wird, die kein C++ beherrschen, dann sieht es noch magerer aus bzw. brauchbare neue Entwicklungsumgebungen zumindest für die Windows x86/x64 Welt.
 
andr_gin schrieb:
Es hat schon mehrere neuere Standards für C gegeben und C++ ist eher als eine solche Erweiterung anzusehen.
Ganz im Gegenteil. C++ ist eine vollkommen eigenständige Sprache, standardisiert von der ISO, und so sollte man sie auch betrachten. Am besten man versucht überhaupt keine Relation zu C herzustellen.
 
Danke für eure antworten aber meine Frage hat eigentlich keiner so richtig beantwortet^^.

Frage:

Hallo,

wie kann ich auf C umstellen weil jetzt ist nämlich das C++ eingestellt.

Weil ich bis lang nur C programmieren kann und Microsoft Visual C++ 2008 Express Edition anzeigt das es "int" nicht unterstütz.
 
Die Frage kann ich dir so nicht beantworten, aber das klingt eigentlich nach einem einfachen Fehler in deinem Programm. Poste doch mal lieber das...
 
Kommt dein Compiler denn komplett ohne Dokumentation? Da steht doch sicher drin, wie man mit ihm C- bzw. C++-Quellen übersetzt.
 
Zurück
Oben