我繼承,在VS2005編譯罰款C++項目,但是當我在VS2010中打開它,我有很多的智能感知誤差修改的是這樣的:智能感知錯誤2010
智能感知:表達式必須有整數或枚舉類型
實際上打開項目中的一個cpp文件似乎會導致錯誤出現。
以下是導致錯誤的行的類型示例。
if (pInfoset->Fields->Item["Contact"]->Size <= 0)
我繼承,在VS2005編譯罰款C++項目,但是當我在VS2010中打開它,我有很多的智能感知誤差修改的是這樣的:智能感知錯誤2010
智能感知:表達式必須有整數或枚舉類型
實際上打開項目中的一個cpp文件似乎會導致錯誤出現。
以下是導致錯誤的行的類型示例。
if (pInfoset->Fields->Item["Contact"]->Size <= 0)
從您在評論中提到的內容(關於IntelliSense未找到.tli文件)中,錯誤應該在您構建解決方案後就會消失。 .tli(和.tlh)文件是由#import指令創建的自動生成的文件,但顯然,您需要編譯具有#import指令的文件才能生成這些文件(僅通過智能感知不會生成他們)。
我認識到這是ADO語法的代碼。你正在與一個非標準的語言擴展作鬥爭,這個擴展在過去的十年裏使COM編程變得更加簡單。它允許在C++類上使用__declspec(property)
聲明符declaring properties。舉例:
class Example {
public:
int GetX(const char* indexer) { return 42;}
void PutX(const char* indexer, int value) {}
__declspec(property(get=GetX,put=PutX)) int x[];
};
int main()
{
Example e;
int value = e.x["foo"]; // Barf
return 0;
}
智能感知解析器在VS2010中完全徹底檢修,並通過使用Edison Design Group前端重新實現。它只是與語言擴展不兼容,並且不適合索引運算符的使用。我會說,他們可以原諒他們。
你可以在connect.microsoft.com上抱怨這個,但我不會期待奇蹟。問題仍然存在於VS2012中。解決方法是停止使用虛擬屬性並改用getter函數get_Item("Contact")
。
如果它們只是Intellisense錯誤,請丟棄您的Intellisense DB並讓它重新生成。 (SDF文件,甚至是NCB,如果它仍然存在的話) – Bart
現在,它抱怨它無法打開\ myproject \ release \ msado15.tli - 這些錯誤似乎與ADO有關。 – smithy
如果我沒有弄錯(儘管我幾乎沒有這方面的經驗),它是由VS生成的文件。也許支持它(只是爲了確定),現在就刪除它。看看它是否再生。如果沒有,只需複製您擁有的文件。 – Bart