【发布时间】:2011-08-01 11:29:16
【问题描述】:
全部,
我对 C++ 项目的 Intellisense 有一个奇怪的问题。背景:我最近安装了 VS2010 Sp1,并且在 SQL Server 2008 R2 中丢失了 Intellisense。我尝试按照建议安装累积更新 7 (CU7),但没有成功。但是,重新安装 SQL Server 2008 R2 确实如此。然后我使用 CU7 为 SQL Server 2008 R2 进行了更新,一切都很好。现在 Intellisense 对 C# 项目工作得很好,但现在对于 C++ 项目,它并不能正常工作(注意:C++ 项目是不是 C++/CLI)。
我已禁用预编译标头(“不使用预编译标头”)并包含以下内容:
#include <cmath>
#include <complex>
#include <iostream>
#include "stdafx.h"
#include "globals.h"
using namespace std;
注意:我知道使用 std 命名空间并不总是被认为是最佳实践,但在这里它会节省我分配的时间并且不会产生歧义。
所以现在当我想要一个 printf 语句时,例如,如果我键入 printf,我得到的不是 Intellisense 提示。但是,如果我 Ctrl+Space 或 Ctrl+J Intellisense 正在识别该命令,它就会显示出来。下面是 Intellisense 无法自动工作的图像。
现在如果我输入 std::printf,就会出现 Intellisense:
有什么方法可以让 VS2010/Intellisense 知道我想使用 std 命名空间,因为它似乎只是无法识别“#using namespace std;”命令。
非常感谢。
【问题讨论】:
-
如果你禁用了预编译的头文件,你不妨去掉
#include "stdafx.h"。 -
要明确:您希望智能感知在您开始输入“p”后立即弹出,而不是在某个可识别的标记处(即在到达“printf(”)之后?如果是这样,我不认为有任何方法可以做到这一点- ctrl+space 尽可能接近。
-
不记得我在哪里读到的,但是 VC++ Intellisense 在 VS2010 中使用预编译头文件效果更好。甚至有一些临界情况,其中某些功能仅适用于预编译的标头。当我试图弄清楚为什么我的 VS 2010 与 VS 2008 相比如此缓慢时,我看到了这一点。为什么你禁用了 pch?
-
使用预编译头文件时,代码将无法编译。它抱怨 #include
和所有其他包含该问题的语句。它还抱怨使用命名空间 std;。当我删除 pch 时,它会像我预期的那样编译得很好。 @Sjoerd如果我删除了删除pchs的#include“stdafx.h”,我再次收到编译时错误。是的,我希望它像 C# 一样弹出。当我使用 std::printf() 但没有“std::”前缀时它会弹出 - 我认为应该是可能的。 -
@Camus 使用预编译头文件时,您的
#include "stdafx.h"必须是文件中的第一个#include,这解释了为什么您的编译器会抱怨#include stdafx.h上方的#include 行。
标签: c++ visual-studio-2010 intellisense