PDA

View Full Version : [Visual C++]


_Claudio
11-05-2009, 10:15
Ciao a tutti, volevo sapere se esiste una add-on per Visual C++ che implementi alcune funzionalità di supporto all'inserimento del codice, tipo eclipse.

Ad esempio il controllo dei parametri passati quando si chiama una funzione, dei metodi chiamati di una classe, avete presente quando eclipse sottolinea di rosso o di giallo ciò che viene inserito se non è coerente?

In caso contrario è possibile sviluppare add-on per Visual C++?

71104
11-05-2009, 11:42
In caso contrario è possibile sviluppare add-on per Visual C++? si: http://msdn.microsoft.com/en-us/library/bb166441.aspx

!k-0t1c!
11-05-2009, 11:47
Visual Assist talvolta riesce a sottolineare l'errato passaggio dei parametri, e *forse* qualcosa lo fa anche CodeRush/Refactor Pro (non so se lo fa solo per .NET o anche per VC++) ma il punto è che quello che vedi fatto per java/c#/etc non è fattibile allo stesso modo per il C++ perché il C++ ha solo la maschera di un linguaggio tipizzato, ma in realtà la sua tipizzazione fa abbastanza ridere, e nessuno ti vieta, per esempio, di castare a void* e poi di castare da void* a qualcos'altro. Determinare che cosa stai facendo a quel punto diventa a dir poco ostico...

tomminno
11-05-2009, 12:23
Visual Assist talvolta riesce a sottolineare l'errato passaggio dei parametri, e *forse* qualcosa lo fa anche CodeRush/Refactor Pro (non so se lo fa solo per .NET o anche per VC++) ma il punto è che quello che vedi fatto per java/c#/etc non è fattibile allo stesso modo per il C++ perché il C++ ha solo la maschera di un linguaggio tipizzato, ma in realtà la sua tipizzazione fa abbastanza ridere, e nessuno ti vieta, per esempio, di castare a void* e poi di castare da void* a qualcos'altro. Determinare che cosa stai facendo a quel punto diventa a dir poco ostico...

Scusa ma in C# chi mi vieta di castare ad object e da lì ad un altro tipo completamente slegato dall'originale?

gugoXX
11-05-2009, 12:27
Scusa ma in C# chi mi vieta di castare ad object e da lì ad un altro tipo completamente slegato dall'originale?

Nessuno. Un analizzatore sintattico avrebbe problemi anche li'.
Un lavoro pulito pero' non dovrebbe avere bisogno di molti cast e magari anche nessun object.

_Claudio
11-05-2009, 12:32
Se di cast si parla allora tutto è possibile, persino in Java che tu ritieni abbia una tipizzazione migliore...

Comunque valuterò se conviene sviluppare qualcosa del genere "in casa"... per C++, gestione delle classi .NET o native.

Visual Assist X purtroppo è a pagamento con licenza d'uso limitata a 6 mesi/1 anno e non mi sembra molto conveniente per chi sviluppa non professionalmente. CodeRush è sulla stessa scia e da quanto ho visto mi sa che è solo per .NET.

gugoXX
11-05-2009, 12:37
Se di cast si parla allora tutto è possibile, persino in Java che tu ritieni abbia una tipizzazione migliore...

Comunque valuterò se conviene sviluppare qualcosa del genere "in casa"... per C++, gestione delle classi .NET o native.

Visual Assist X purtroppo è a pagamento con licenza d'uso limitata a 6 mesi/1 anno e non mi sembra molto conveniente per chi sviluppa non professionalmente. CodeRush è sulla stessa scia e da quanto ho visto mi sa che è solo per .NET.

Molte cose sono implementate gia' anche in Visual Studio, dipende da cosa cerchi.
Comunque ci sono add-on e si possono scrivere (mai fatto)

_Claudio
11-05-2009, 12:40
Molte cose sono implementate gia' anche in Visual Studio, dipende da cosa cerchi.
Comunque ci sono add-on e si possono scrivere (mai fatto)

Cercavo funzionalità di assistenza nell'inserimento del codice per C++.

Nella express edition per lo meno non esistono...

!k-0t1c!
11-05-2009, 13:02
Nessuno. Un analizzatore sintattico avrebbe problemi anche li'.
Un lavoro pulito pero' non dovrebbe avere bisogno di molti cast e magari anche nessun object.
Infatti, in Java/C#/etc è considerata pratica pessima quella di avere object in giro (non a caso hanno inventato i generics) mentre di void* in C++ ne ho visti a non finire. Inoltre mi pare che con ReSharper il downcast a object e l'upcast a tipo non compatibile venga rilevato, ma dovrei verificare. Tutto sommato comunque è molto più facile da rilevare in C#/Java/etc che in C++ perché quando si effettua il downcasting a object l'informazione del tipo viene preservata (e appunto l'upcasting a un tipo non compatibile viene rilevata al più tardi in runtime, al contrario del C++ dove può passare del tutto inosservata) e grazie a questo un po' di flow analysis certi errori li può far saltar fuori facilmente.