2009-07-15 14 views
10

L'editor di MS Visual Studio evidenzia alcuni identificatori non parole chiave come parole chiave in file C++. In particolare "evento" e "matrice" sono trattati come parole chiave. Questo è molto fastidioso per me, perché non sono parole chiave in C++. So come aggiungere le mie parole chiave all'elenco di identificatori evidenziati dalla sintassi, ma come rimuovere quelli incorporati esistenti? Sono consapevole che questo potrebbe richiedere la patch di alcuni file eseguibili. Quindi qualcuno sa come fare?Esiste un modo per impedire che una "parola chiave" venga sintattica in MS Visual Studio

+1

Possibile duplicato: http://stackoverflow.com/questions/372580/why-is-array-a-reserved-word-in-cc –

+1

Questo non è un duplicato - questo è chiedere perché 'array' è una parola chiave nel linguaggio. –

risposta

2

Non sembra che una funzione di disattivazione della sintassi sia esposta in modo intuitivo.

L'unico modo in cui posso pensare di disattivare selettivamente la colorazione della sintassi è creare un nuovo plug-in di sintassi per la colorazione per l'IDE ed elencare tutte le parole chiave che si desidera colorare. Microsoft fornisce informazioni in this article su come eseguire questa attività.

Lo svantaggio di questo approccio è che il tuo IDE ora avrà due linguaggi C++ e non sono sicuro di come selezionerà il plug-in da scegliere una volta caricato un file .h o .cpp. Tuttavia, this article suggerisce che è possibile sovrascrivere i plug-in C++ esistenti riscrivendo alcune chiavi di registro.

+1

Questo eliminerebbe anche tutte le funzionalità di C++ IntelliSense. –

0

Penso che l'unico modo "semi-pratico" per ottenere ciò è creare un Visual Studio package che utilizza Text Markers per nascondere in modo selettivo le parole chiave che non si desidera colorare. Anche questo non è un compito di un giorno. Modifica: Probabilmente non è nemmeno un compito di un'intera settimana per qualcuno che non conosce in modo complicato l'API di Visual Studio e tutte le sue stranezze, specialmente se non lo trova privo di bug.

In altre parole, probabilmente vuoi semplicemente ignorarli.

6

Grazie all'articolo menzionato da Steve Guidi, sono riuscito a trovare il file eseguibile che contiene le classi Colorizer e IScanner. È denominato vcpkg.dll e si trova in/Microsoft Visual Studio 8/VC/vcpackages. (Sto usando Visual C++ 2005 Express Edition, le cose potrebbero essere diverse in altre versioni.)

Il vcpkg.dll contiene stringhe con codifica UTF-16 con terminazione null. L'ho aperto con l'editor esadecimale e ho cercato "array". C'è una sola stringa del genere nel file, quindi l'ho sostituita con "arrry". (È importante mantenere l'ordine alfabetico relativo rispetto ad altre parole chiave). Poi ho cercato "evento", si presenta in più punti, ma ce n'è solo uno che non fa parte di una stringa più lunga, quindi Ho sostituito questo con "evvvt". Dopo aver avviato Visual Studio, si è scoperto che "array" e "evento" non erano più evidenziati, ma "arrry" e "evvvt" lo erano!

Ovviamente questo è un brutto trucco, e annullerà la garanzia, e probabilmente va contro il Microsoft EULA, ma che sollievo per gli occhi! Ad ogni modo, se vuoi farlo, fai attenzione e ricorda di eseguire il backup del file.

+0

Questo hack non sembra funzionare per VS10. – paperjam

Problemi correlati