C ++ / CLI Ошибки в Intellisense, хорошо компилируется - PullRequest
4 голосов
/ 16 марта 2012

... у кого-нибудь есть идеи, как это исправить?

Visual Studio 2011 Beta, пытаясь подготовить некоторые фреймворки к этому, и теперь проходит через ограниченный список проблем.

код:

String^ pUser = (System::String^) pConnectionStringBuilder["UserName"];
String^ pPass = (System::String^) pConnectionStringBuilder["Password"];
String^ pBroker = (System::String^) pConnectionStringBuilder["Broker"];

pConnectionStringBuilder является экземпляром ConnectionStringBuilder.

Ошибки:

2   IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type    c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  62  39  Tradex.Connectivity.Rithmic
3   IntelliSense: expression must have integral or unscoped enum type   c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  62  64  Tradex.Connectivity.Rithmic
4   IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type    c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  63  39  Tradex.Connectivity.Rithmic
5   IntelliSense: expression must have integral or unscoped enum type   c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  63  64  Tradex.Connectivity.Rithmic
6   IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type    c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  64  41  Tradex.Connectivity.Rithmic
7   IntelliSense: expression must have integral or unscoped enum type   c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  64  66  Tradex.Connectivity.Rithmic
8   IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type    c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  269 6   Tradex.Connectivity.Rithmic
9   IntelliSense: expression must have integral or unscoped enum type   c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  269 32  Tradex.Connectivity.Rithmic

и они просто не имеют никакого смысла вообще;)

Есть два других предупреждения, но совершенно очевидно, что это не ошибка:

1> Tradex.Connectivity.Rithmic.vcxproj -> C: \ Work \ Tradex \ Source \ Debug \ Tradex.Connectivity.Rithmic.dll rithmicconnector.cpp (104): предупреждение: C6001: Использование неинициализированной памяти «oParams».rithmicconnector.cpp (108): предупреждение: C6001: Использование неинициализированной памяти «oLoginParams».1> Анализ кода завершен - 0 ошибок, 0 предупреждений

Компилируется нормально.

Я пытался использовать pConnectionStringBuilder-> default - угадай, что;) Жалуется.

2   IntelliSense: class "System::Data::Common::DbConnectionStringBuilder" has no member "default"   c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp  62  65  Tradex.Connectivity.Rithmic

, что, кстати, тоже неправильно и компилируется;)

Я действительно предпочитаю не иметь ошибок Intellisense.

Ответы [ 3 ]

11 голосов
/ 16 марта 2012

Intellisense для C ++ / CLI часто запутывается и сообщает о ложноположительных ошибках. Это просто не так хорошо, как Intellisense для C #. Чтобы быть справедливым, код C ++ в целом гораздо сложнее анализировать постепенно, чем код C # (например, если я добавлю одну прагму #define в файл заголовка, структура любого файла, импортирующего файл заголовка, может полностью изменить ).

Как только я начинаю видеть ложные ошибки Intellisense, я обычно просто отключаю их в окне Список ошибок:

  1. Щелкните правой кнопкой мыши содержимое окна списка ошибок
  2. Снимите флажок «Показать ошибки Intellisense»
1 голос
/ 05 мая 2015

Я обнаружил, что если файл заканчивается без новой строки (например, последняя строка включаемого файла - #endif и после него нет CRLF), это приведет к путанице в Intellisense и вызовет ошибки.

1 голос
/ 16 сентября 2013

Если вы всегда работаете в C ++ и беспокоитесь об ошибках Intellisense, вы можете навсегда отключить этот отчет об ошибках: Инструменты -> Опция -> Текстовый редактор -> C / C ++ -> Дополнительно -> IntelliSence -> ОтключитьСообщение об ошибке

...