VS的IntelliSense功能類似其他IDE中的auto-completion,也就是能夠自動補全,不過和VI和Emacs中的auto-completion不一樣,IntelliSense比較Intelligent,根據程式設計語言的文法來談出備選填,比如有下面的code:
class Peon {
public:
void Work();
};
class Warrior {
public:
void Wallop();
};
void foo() {
Peon p;
p.W
在輸入"p.W"之後,使用VI的autocompletion,只是把可以用的W開頭的詞全拿來作為備選項,這樣Work、Warrior、Wallop都是,其實p是一個Peon類型的變數,後面不可能是Warrior或者Wallop,但是IntelliSense可以根據文法排除掉這兩個幹擾項。
這本來是個不錯的功能,但是對C++這樣的語言,需要文法分析原始碼,每更改一次code都有可能引發IntelliSense更新.ncb檔案,而IntelliSense比Java的記憶體回收還不識相,非但往往做的不合時宜,而且會佔用很多時間。對於一個包含多個Projects的Solution,VS環境很容易僵死,左下角一個"Updating IntelliSense"的提示。
很可惜,VS到2005還沒有Disable掉這個功能的UI,所以只好用些非常手段來Disable這個有時候比較討厭的功能了。IntelliSense會不斷更新Solution的.ncb檔案,把這個檔案弄成Read-only,然後確認一堆的對話方塊是個辦法,但是太麻煩,最簡單直接的辦法,需要一點壯士斷腕的勇氣,就是把VS安裝目錄下的VC/vcpackages/feacp.dll去掉,這個DLL就是管IntelliSense的,然後這個世界就清淨了。
註:去掉IntelliSense功能之後,VS 的 ClassView 將會失效,也即看不到任何資訊。