Wie passe ich Visual Studio für die Entwicklung von C++ Anwendungen an?

IKäsebrot

Ensign
Registriert
Juni 2014
Beiträge
245
Hallo zusammen,

ich benutze VS 2012. Bis jetzt habe ich darin nur C# Anwendungen entwickelt (Winforms, WebServices, SharePoint,XNA...). Gerade mache ich einen Einstieg in OpenGL und somit in C++. Dabei ist mir aufgefallen, dass VS unter C++ so ca 95% seiner bequemen Funktionen verloren hat.

Beispielsweise habe ich ein Array/Pointer zum Array deklariert:

Code:
bool* const meinArray = new bool[100]();

Wenn ich jedoch mit dem Debugger durch den Code iteriere kann ich den Inhalt des Arrays nicht einsehen. In einer C# Anwendung könnte ich mir hier sämtliche Elemente eines Arrays anzeigen lassen.

Außerdem scheint die Textvervollständigung (Strg + Leertaste) einfach unter aller Sau zu sein. Vielleicht liegt es daran, dass ich Header importiere (glew.h und glut.h) die, die IDE nicht kennt?

Ich frage mich ob das einfach an irgendwelchen Texteditor Einstellungen (etc.) liegt oder ob das einfach etwas ist woran ich mich gewöhnen muss.

Danke im Voraus.
 
Sei froh, dass Microsoft C++ler nur so wenig drangsaliert, doch bitte endlich das .NET Kool-Aid zu trinken. Du willst gar nicht wissen, wie furchtbar es ist, Visual Studio für C zu benutzen.
 
asdfman schrieb:
Sei froh, dass Microsoft auf C++ler nur ein bisschen scheißt. Du willst gar nicht wissen, wie furchtbar es ist, Visual Studio für C zu benutzen.

Also ist das alles absoluter Standard und nicht zu beheben? Sollte ich mich nach einer anderen IDE umgucken CodeBlocks, NetBeans, Eclipse? Obwohl es mir irgendwie widerstrebt eine Java-IDE für C++ zu nehmen, zwar ohne besonderen Grund aber mein Kopf sagt: "Das kann nicht richtig sein!".
 
Du benutzt doch schon eine .NET IDE für C++. Das kann eigentlich auch nicht richtig sein, oder? So schlimm Visual Studio oft genug ist, ich kenne leider wirklich keine bessere.

Edit: Was du beschreibst, ist am Ende eine kleine Unbequemlichkeit. Da ich, wie gesagt, keine bessere IDE für Windows kenne, benutze ich sie für C, wo sie sich an der Grenze der Benutzbarkeit bewegt. Und ja: Selbst dann bekommt man nichts besseres.
 
Zuletzt bearbeitet:
Code:
bool* const meinArray = new bool[100]();

Ob man das als C++ bezeichnen darf stell ich mal in den Raum. Keyword: std::scoped_array, oder besser std::array

C++ ist eben C++ und nicht C#, wenn du im Debuger auf meinArray schaust dann ist das ein Zeiger, kein Vector, und kein "Array Typ" im expliziten sinne. Es ist zunächst nur ein Zeiger im wahrsten Sinne des Wortes und keine Sequence/Aneinanderreihung von irgendwas/irgendwie.
Dukannst jedoch mehr sehen wenn du im Watch Festern "meinArray,100" angibst.
Oder du schaust dir "Modernes" C++ an und verwendest std::array oder ähnliches. Was kein Laufzeit einbußen hat, jedoch zur compile Zeit mehr sicherheiten bietet.

Aber zu deiner Frage, da gibt es direkt in VS nicht viel umzustellen. Jedoch kannst du deinen Comfort durch Plugins/Tools wie VisualAssist verbessern. Nativ bietet VS keine sehr gute Auto-Completion etc. an.
 
Wenn ich jedoch mit dem Debugger durch den Code iteriere kann ich den Inhalt des Arrays nicht einsehen. In einer C# Anwendung könnte ich mir hier sämtliche Elemente eines Arrays anzeigen lassen.

Das funtioniert unter c++ ebenso, wenn du ein Array so anlegst "bool Test[10];", und nicht einen Zeiger, was in C# nicht funktioniert.. Anschließend werden die Werte nach einmaligem ausführen des Programmes auch angezeigt, wenn du mit der Maus über die Bezeichner im Quelltext gleitest. (*edit* Ne, stimmt nicht, hatte ich falsch in Erinnerung... nur solange, wie der Debugger läuft.)
 
Zuletzt bearbeitet:
calluna schrieb:
Das funtioniert unter c++ ebenso, wenn du ein Array so anlegst "bool Test[10];", und nicht einen Zeiger, was in C# nicht funktioniert.. Anschließend werden die Werte nach einmaligem ausführen des Programmes auch angezeigt, wenn du mit der Maus über die Bezeichner im Quelltext gleitest.

Du hast natürlich recht. was mich etwas verwundert. Wie gesagt ich bin neu in C++ aber ich hatte das eigentlich so verstanden, dass ob ich nun "bool* Test[10];" oder "bool Test[10];" deklariere die Variable immer einen Zeiger auf das erste element in dem Array darstellt.

Oje ich hoffe ich rede mich hier nicht um Kopf und Kragen :) wollte auch keine C++ Frage daraus machen. trotzdem Danke für euer feedback.
 
808y hat es treffend geschrieben. Für den Debugger macht es einen Unterschied, ob du bool *Test... oder bool Test[10] überwachen willst, weil es verschiedene Typen sind. Wenn du beide Varianten ausprobierst, siehst du auch an den Symbolen in der Überwachung, dass der erste Fall vom Debugger folgerichtig als Zeiger behandelt wird (Typ: bool* const), der zweite aber nicht (Typ: bool[10]).

Ansonsten... viel Spaß noch beim weiteren lernen.
 
Zuletzt bearbeitet:
Nur als Anmerkung:

Was mich übrigens auch sehr stört bzw. mir sehr fehlt ist:

Rechtsklick auf Methodenname -> Refactor -> Rename (oder auch Methode extrahieren).

Außerdem finde ich das alles extrem seltsam! Es wird doch schon sehr viel länger in C++ entwickelt als in C# und dennoch kommt es einem vor als hätte VS noch nie C++ gesehen.
 
Microsoft hat C++ in der Vergangenheit leider etwas stiefmütterlich behandelt und stattdessen mehr auf die ganze .NET-Schiene gesetzt. Nach eigener Aussage wollten sie sich aber in Zukunft auch wieder für die C++ Entwickler etwas mehr ins Zeug legen.

Ich persönlich bin zwar gelegentlicher Visual Studio Nutzer; im wesentlichen beschränkt sich das aber bei mir auch darauf, Dateien im Projekt umzubenennen, zu verschieben, zu entfernen oder hinzuzufügen, und das Kompilieren/Linken und Debuggen (*1).

Für alles andere bin ich im Notepad++ unterwegs.

(*1) In diesem Punkt laß ich allerdings nix über VS kommen. Der Debugger ist allererste Sahne ... da hab ich noch nix gesehen, das auch nur annähernd an den Komfort von VS rankommt.
 
IKäsebrot schrieb:
Nur als Anmerkung:

Was mich übrigens auch sehr stört bzw. mir sehr fehlt ist:

Rechtsklick auf Methodenname -> Refactor -> Rename (oder auch Methode extrahieren).

Außerdem finde ich das alles extrem seltsam! Es wird doch schon sehr viel länger in C++ entwickelt als in C# und dennoch kommt es einem vor als hätte VS noch nie C++ gesehen.

Visual Assist : http://www.wholetomato.com/

Ohne Visual Assist würde ich nicht leben wollen als VS nutzer für C++.

Ich vermute da eher das MS nicht den Markt für VS Plugins töten möchten. So können Firmen wie diese richtig Cash verdienen an Plugins die die Produktivität steigern.
 

Ähnliche Themen

Zurück
Oben