All These Things That I've Done

Apply the programming model to everyday programming problems
posts - 83, comments - 71, trackbacks - 4

My Links

News


View Gianluca Carucci's profile on LinkedIn

Tag Cloud

Archives

Post Categories

Image Galleries

Blogs

Links

Pensate come sarebbe brutto C# se...

il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei namespace dichiarati a inizio file.

Oppure se...

il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine delle classi/delegati/enumerazioni all'interno di un file.

O ancora peggio se...

il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei file da compilare.

Ma anche se...

con tanta fatica (e fortuna) riusciamo a trovare la giusta combinazione, ma un piccolo flag - fondamentale per la buona riuscita della compilazione - all'interno della configurazione del nostro progetto, provoca un errore di linking.

Per fortuna non sono problemi che si riscontrano in C#, ma aimè sono situazioni frequenti in progetti C++; ancor più frequenti quando si cerca di compilare un software Open Source. Ci fosse una volta che si scarica un progetto C++, si lancia la compilazione e questa funziona 'al primo colpo': certo, spesso il problema è dovuto ad una cattiva organizzazione del codice (e delle librerie), ma il linguaggio certo non aiuta.

Sia chiaro, non odio C++, mi piace e per certi versi lo amo (diciamo che lo stimo moltissimo); come potrei odiare un linguaggio che procaccia il cibo al mio caro fratellino ed evita che sia io a doverlo mantenere?

Quello che però proprio non riesco a mandare giù è dover perdere del tempo (in alcuni casi ore o giorni), a risolvere dei problemi completamente estranei al reale scopo della soluzione che sto sviluppando. Se c'è un pregio di C# - e .NET in generale - è proprio questo: lo sviluppo è concentrato per lo più verso l'aspetto funzionale, invece di quello tecnologico e infrastrutturale.

Se avete la necessità di dover compilare con MSVC++ 2005 l'ultima versione della libreria xvid è il vostro giorno fortunato: questa sera impiegherete 4 ore a decidere come vestirvi per andare sui navigli o al Karement piuttosto che perderle per capire come risolvere questo errore (ovviamente, lo stesso identico progetto compila correttamente usando MSVC++ 2003):

error C2632: 'int' followed by 'int' is illegal

Il problema è causato dal punto del codice in cui è incluso windows.h nel file portab.h. Spostando l'inclusione del file all'inizio del sorgente tutto funzionerà magicamente.

Per essere un po' più puliti sostituiamo la dichiarazione di inclusione (nel punto originale) con il seguente codice:

#if defined(_MSC_VER) && _MSC_VER < 1400

#include <windows.h>

#endif

ed aggiungiamo all'inizio del file il codice:

#if defined(_MSC_VER) && _MSC_VER == 1400

#include <windows.h>

#endif

 

In questo modo se il compilatore Visual C++ 2005, l'inclusione del file sarà spostata all'inizio del sorgente, altrimenti sarà lasciata dov'è.

Technorati Tag: , , , , ,

Print | posted on martedì 30 ottobre 2007 17:11 | Filed Under [ C++ C# ]

Powered by:
Powered By Subtext Powered By ASP.NET