C++ Intellisense 和错误检查问题

Posted

技术标签:

【中文标题】C++ Intellisense 和错误检查问题【英文标题】:Issue with C++ Intellisense and Error Checking 【发布时间】:2009-04-08 14:24:41 【问题描述】:

使用 Visual C++ 2008。第一次,我正在尝试从 C# 转换并想尝试一下。除了一些像智能块和一些颜色这样的东西之外,我没有改变太多基本设置。因为我在 C++ 知识方面处于零水平,所以我所做的所有谷歌搜索都超出了我的想象。

问题的第 1 部分 我的问题是我刚刚创建了我的第一个 Windows 窗体项目。现在我双击并进入这样的内容,intellisense 没有列出任何成员?

private: System::Void executeDocumentationCmd_Click(System::Object^  sender, System::EventArgs^  e) 

this. NOTHING POPS UP?

如果我输入MessageBox::,那么它将弹出Show 的智能感知。这是正常的吗?我发现它很有帮助,因为我正在学习基础知识,让它列出可用的 txt 框和成员,但它不会像在 C# 智能感知中那样做。

我有stdafx.h。我根据在线帮助删除了 ncb 文件并重新启动,什么也没有。额外的标题?

问题的第 2 部分:在实时编码中没有像在 C# 编辑中那样带下划线的错误。这是 C++ express 的一个特性(编译前的错误检查)吗?当我输入错误信息时,我没有看到任何警告或错误。

【问题讨论】:

【参考方案1】:

C++ 中的this 是由-> 而不是. 取消引用的指针

此外,VS2008 中 C++ 的智能感知不如 C# 有用,这包括没有错误检查。 VS2010 将为 C++ 引入内联错误检查。

您需要注意 C# 和 C++ 之间的一些非常大的差异。这是一个很大的话题,所以我不认为这里的帖子可以总结它们,但两个重要的点是缺乏垃圾收集(查找 delete 关键字)和指针。指针存在于 C# 中,但它们仅在 unsafe 代码块中可用,而在 C++ 中,指针几乎是王道。您可能想投资一本书来帮助您学习。

【讨论】:

哦!我觉得很愚蠢,只要我做了你的箭头标志,智能感知就会弹出......至于错误检查......难怪我找不到它!哈哈。对我来说是新的。知道 express 2010 c++ 的发布时间吗? 正确。我刚刚参加了 c#“中级”级别的课程......并决定 c++ 是我想集中精力的地方,然后稍后再回到 c#(或继续学习)......我会得到一本书,现在我正在尝试使用简单的字符串函数来熟悉它。谢谢! 不客气。很高兴看到您决定迈出这一步。 C++ 是一种非常强大的语言,它可能会让人望而生畏,但是如果你学习 C++,你的 C# 工作会更丰富,你对 Windows 的理解也会更好。【参考方案2】:

仅供参考,根据您的代码 sn-p,您实际上使用的不是 C++,而是 C++/CLI,这是一种不同的语言。

【讨论】:

好的....我刚刚读到这个并在谷歌上发现了它...评论似乎对 cli 版本不利。我想将自己从 .net 框架中移除,因为我打算尝试一些游戏开发......现在推荐免费的面向视觉的(形式)c++?没有.netframework? 没有.net框架开发窗体应用程序是不是很困难? c# 似乎容易得多,以至于偏离 .net 似乎很困难 看看这个讨论并下定决心(如果可以的话):***.com/questions/115045/…【参考方案3】:

从历史上看,C++ 专门设计为与 C 兼容,而 C# 和 Java 则不兼容。一个后果是 C++ 难以解析,因此 C++ 的智能感知工作比 C# 更难。我觉得它很不稳定,希望它在 VS 2010 中会更好。

此外,与大多数语言相比,C 和 C++ 在变量和指针之间的区别要大得多。我不熟悉 C#,但在 Java 和 Common Lisp 等语言中,几乎所有内容都是指针,因此没有特殊符号。当我使用 Pascal 时,很少有事情是用指针完成的。 C 和 C++ 是我使用过的最容易混淆的语言。它们还允许指针算术,这就是很多错误的原因。

我认为任何一种语言都不是一种非常好的语言,只是为了尝试从 C++ 中滑入。我建议,只要您对 C++ 感兴趣,您就可以像学习一门新语言一样学习它。获得良好的现代介绍。

【讨论】:

以上是关于C++ Intellisense 和错误检查问题的主要内容,如果未能解决你的问题,请参考以下文章

LNK2019 错误,但 Intellisense 工作正常

IntelliSense:“没有可用的附加信息”,[请参见“C++项目 IntelliSense 疑难解答”,获得进一步的帮助]

c++ 错误提示 IntelliSense: 指向绑定函数的指针只能用于调用函数\1.cpp 78

IntelliSense:“没有可用的附加信息”,[请参见“C++项目 IntelliSense 疑难解答”,获得进一步的帮助]

预编译标头 IntelliSense 错误

C++ OptionalAttribue 和 C# Intellisense