2011-04-13 8 views
8

Stavo facendo alcuni piccoli esercizi in C con un amico, e ho continuato a usare parole chiave da lingue più recenti (ad esempio, bool, nuovo) per abitudine. Mi ci è voluto un po 'per capire che era il problema perché VS continuava a metterli in evidenza come parole chiave, anche se non erano in C.Come ottenere l'evidenziazione della sintassi C (non C++) in Visual Studio (2010)?

Mi sono assicurato che tutti i miei file fossero * .c, e ho impostato le proprietà del progetto compilare come C. Tuttavia, l'editor ha sempre aggiunto evidenziazione della sintassi per le parole chiave C++ oltre alle parole chiave C. C'è un modo per dire a Visual Studio che voglio solo C normale?

Utilizzando VS2010 se è importante.

risposta

7

Non è possibile. This is a known bug in Visual Studio. Il meccanismo "Intellisense" che viene utilizzato per la colorazione della sintassi in Visual Studio è basato sul compilatore EDG C++ che Microsoft ha acquistato, dal momento che la loro Visual C/C++ è poco adatta per l'analisi incrementale necessaria per gestire l'analisi di on-the-fly codice incompleto. E il compilatore EDG è solo C++.

Si può vedere un esempio di questo con la creazione di un file foo.c che compila come C. Quindi aggiungere al file le seguenti righe:

#ifdef __cplusplus 
#error C++ is what I am 
#else 
#error A bunch of C code! 
#endif 

Quando si compila il programma che si vedrà il messaggio di errore "Un mucchio di codice C!" Ma quando guardi la finestra dell'editor di Visual Studio, il lato C sarà disattivato e contrassegnato inattivo, e solo il lato C++ sarà colorato! Questo perché il colorer della sintassi Intellisense, basato sul compilatore EDG C++, crede che tutto sia C++.

0

Tenere conto del fatto che alcune funzioni di C++ sono state adottate da C (C99 std), come ad esempio i commenti in stile C++ (//), o il tipo di dati booleano (booleano).

Problemi correlati