문제

C/C++ 프로젝트에서 작업할 때 IntelliSense가 안정적으로 작동하도록 하는 방법을 아는 사람이 있습니까?10개 파일 중 약 1개 정도에서 작동하는 것 같습니다.Visual Studio 2005는 2008보다 훨씬 좋아진 것 같습니다.

편집하다:반드시 해결책은 아니지만 여기에 제공된 해결 방법은 다음과 같습니다.

Visual Studio 2008에서 IntelliSense가 안정적으로 작동하도록 하는 방법

괜찮은 IntelliSense 시스템을 원한다면 아마도 최선의 선택일 것입니다.

도움이 되었습니까?

해결책

또한 일부 대규모 프로젝트에서는 Intellisense가 때때로 '손실'된다는 것을 깨달았습니다.왜?몰라.

이것이 우리가 구매한 이유이다 시각 보조 (에서 토마토 소프트웨어) Visual Studio 하위 디렉터리(C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages)에서 dll feacp.dll을 삭제하여 Intellisense를 비활성화했습니다.

이는 해결 방법이 아니라 해결 방법일 뿐입니다.

다른 팁

네이티브 C++ intellisense는 모든 버전의 Visual Studio에서 안정적으로 작동하지 않습니다.나는 두 가지 일반적인 문제가 있음을 발견했습니다.

1) 헤더 파일 경로가 올바르게 설정되지 않았습니다.intellisense가 작동하지 않는 유형을 찾으면 IDE를 사용하여 각 헤더 파일을 클릭하여 해당 유형이 포함된 파일을 찾으세요.(#include를 마우스 오른쪽 버튼으로 클릭하고 문서 열기...를 선택합니다.)유형을 선언하는 파일에 도달하기 전에 이것이 실패하면 이것이 문제입니다.헤더 파일 검색 경로가 올바르게 설정되어 있는지 확인하세요.

그리고,

2) Intellisense 데이터베이스가 손상되었습니다.이것은 항상 발생합니다.솔루션을 닫고 .ncb 파일을 삭제한 다음 솔루션을 다시 열어야 합니다.다른 질문에 대한 답변으로 이에 사용하는 매크로를 게시했습니다. 여기.


전처리기는 Intellisense를 혼동할 수도 있습니다. 따라서 빌드 중 모든 #define을 Intellisense에서도 사용할 수 있는지 확인하세요.그 외에는 무엇이 그것을 깨뜨릴 수 있는지 모르겠습니다.전방 선언과 관련하여 특별한 문제를 본 적이 없습니다.

Visual Assist를 얻을 수 없는 사람들에게는 희망이 보이는 것 같습니다.

Intellisense 재구축

추가 기능을 설치했거나 제거했습니까?나는 그것이 내 지능에 영향을 미친다는 것을 알았습니다.

그 외에도 도구->옵션->텍스트 편집기->모든 언어 "자동 목록 구성원" 및 "매개변수 정보"가 선택되어 있는지 확인하십시오.

C++에는 VS2008을 사용하지 않고 VB 및 C#만 사용하지만 intellisense가 작동을 멈 추면 (VS2003/2005/2008의 경우) 프로젝트/파일의 무언가가 손상되었기 때문입니다. 일반적으로 잘못된 참조 또는 코드입니다.

VB와 C#은 Intellisense 트리를 구축하기 위해 참조된 어셈블리를 반영하는 기능으로 인해 훨씬 ​​더 나은 Intellisense 지원을 제공합니다.

C++는 함수 프로토타입에 대한 포함 파일을 탐색해야 하며, 경로가 올바르지 않으면 모든 프로토타입 헤더를 찾지 못할 것입니다.

그 끔찍한 리팩터링 유틸리티가 내 코드를 다듬은 후에 itellisense에 대한 수정이 필요했습니다.문제는 #include 자체를 포함하는 클래스 헤더 파일이었습니다.재귀 참조는 itellisense를 파괴합니다.이에 대한 증상은 itellisense가 다른 클래스를 볼 수 있지만 현재 클래스는 볼 수 없는 경우입니다.또한:

중복된 헤더 로드를 제거하려면 #pragma를 한 번 사용하세요.

이제 프로젝트를 로드하는 데 훨씬 더 오랜 시간이 걸리면 itellisense는 원인이 되는 충돌을 이해하려고 노력하고 완료 지원이 부족합니다.

종종 영향을 받는 것은 단 하나의 클래스 객체입니다. 이는 어떤 파일(보통 헤더)을 살펴봐야 하는지 보여줍니다.

@존 리처드슨 / @조나단 홀랜드

내 포함이 올바르게 설정되어 있으며 문제가 없습니다.또한 NCB 재구축을 여러 번 시도했지만 100% 해결되지는 않았습니다.

나는 그것이 클래스의 전방 선언과 관련이 있을 수 있다는 느낌을 가지고 있습니다.예를 들어헤더 파일에 포함되는 복잡성을 줄이기 위해 일반적으로 다음과 같은 작업을 수행합니다.

class MyPredeclared;

class SomeOtherClass
{
private:
    MyPredeclared* m_pPointer;
}

그게 문제를 일으키는지 궁금해요?다른 아이디어가 있나요?프로젝트가 커질수록 상황은 더욱 악화됩니다.

매우 짜증나는 문제가 있었습니다. Intellisense는 뚜렷한 이유 없이 일부 파일에서만 작동했습니다...Google을 뒤지는 데 몇 시간이 걸렸지만 마침내 그 이유가 실제로 재귀 참조라는 것을 깨달았습니다!나는 다음을 사용하고 있었습니다:

#ifndef CLASS_H
#define CLASS_H
...
#endif

기호의 재정의를 피하기 위해, 이는 때때로 대규모 프로젝트에서 지능을 깨뜨립니다.

그러나 ifndef-define-endif에 주석을 달고 다음을 입력하는 것으로 충분합니다:

#pragma once 

재정의를 피하고 Intellisense가 다시 작동하도록 하기 위해 헤더 파일의 시작 부분에 =)=)

적어도 이것은 나에게 효과적이었습니다. 유용하길 바랍니다...

프란체스코를 건배합니다

저는 최근 VS2008에서 Intellisense를 연구했습니다. 템플릿 등이 광범위하게 사용되는 다소 큰 C++ 수치 선형 대수 라이브러리를 개발 중이기 때문입니다.Intellisense는 곧 프로젝트 작업을 중단했고 저는 일종의 포기를 했습니다. 하지만 지금은 Intellisense가 없으면 정말 짜증나기 때문에 조사를 시작했습니다.이것이 내가 알아낸 것입니다:

Intellisense를 "해제"하는 코드가 포함된 파일이 있다고 가정하면,

  • Intellisense를 손상시키는 헤더 파일이 프로젝트에 있지만 그렇지 않은 경우 #included, 나머지 파일에서는 여전히 작동합니다
  • 포함되어 있지만 내부에 선언된 유형이 사용되지 않으면 여전히 작동합니다.
  • 포함되어 있고 내부에 선언된 유형이 사용되는 경우 여전히 약간 작동할 수 있습니다(멤버에 대한 Intellisense가 없고 지정된 유형이 발생한 후에 Intellisense가 없지만 이전에는 최소한 전역 이름과 인수 정보가 있음)
  • 하나의 .cpp 파일에서 Intellisense가 손상된 경우 문제가 있는 코드가 포함되지 않거나 사용되지 않는 다른 파일에서는 계속 작동할 수 있습니다(그러나 충돌이 심하면 전체 프로젝트에서 비활성화될 것이라고 생각합니다. 나)
  • Intellisense는 성공적인 컴파일 후에 업데이트되는 것 같습니다(때때로 이전에는 업데이트되지 않음).
  • 깨진 코드를 안에 넣기 #if 0, /* .. */ 또는 // Intellisense를 편하게 해주는 것 같습니다

제가 사용한 C++ 기능 중 실제로 Intellisense가 중단된 기능은 몇 가지뿐입니다.

  • 템플릿 매개변수의 '>' 또는 '>='과 비교(예: static_assert<(size > 0)>)
    • 이중 괄호를 사용하여 해결되지 않음(static_assert<((size > 0))> 도움이 안됨)
    • 대신 '<' 또는 '<='를 사용하여 해결합니다(static_assert<0 < size> 공장)
    • 값을 enum에 저장하고 이를 사용하여 템플릿을 특수화함으로써 해결되었습니다.
  • 명시적인 함수 템플릿 특수화는 인수 정보를 비활성화합니다(예: function<type>(args))
    • 아마도 해결할 수 없을 수도 있지만(매크로로 포장할 수도 있음) 문제가 발생해도 견딜 수 있습니다.
  • 다음과 같은 템플릿 멤버 유형의 인스턴스화 Matrix::MakeMatrixType<3, 3>::Result r;
    • 왜 이런 일이 발생하는지 정확히 파악하기가 어렵습니다(아마도 Eigen을 사용했기 때문일 수 있음).
    • IS가 작동하지 않는 별도의 .cpp에서 해당 코드를 이동하여 해결 방법(항상 가능한 것은 아님)

이러한 문제 중 일부는 "단순화된" 구문 분석으로 인해 발생하는 것으로 보이며 이는 적절한 C++ 구문 분석기보다 덜 강력합니다.위의 정보를 바탕으로 기존 코드에서 Intellisense가 작동하도록 하는 "신뢰할 수 있는" 방법은 다음과 같습니다.

  1. 빈 프로젝트(콘솔 앱)를 설정하고 더미로 Main.cpp를 만듭니다. void main() {} 그 안에.
  2. 손상된 헤더 파일 중 하나를 포함하고 math.h
  3. 빌드(Intellisense가 안정적으로 업데이트되려면 컴파일해야 함)
  4. 예를 들어 다음을 입력하여 Intellisense가 작동하는지 테스트합니다. sin( 인수 도움말이 나타나는지 확인합니다.때로는 이것이 효과가 있지만 회원의 도움은 그렇지 않을 수도 있습니다. 따라서 시도해 보십시오.
  5. 헤더 파일에서 무언가의 인스턴스를 만들고, 빌드하고, 그것이 IS를 죽일 수 있는지 확인하십시오.
  6. 범인 파일에서 코드를 제거하고 3단계로 이동합니다.
  7. 문제가 있는 코드를 찾아서 수정한 후 5단계에서 제거한 코드를 다시 넣고 다시 시도하세요.
  8. 전체 수업을 잘 진행시킨 후 다음 수업의 인스턴스를 만드는 식으로...

이 방법을 사용하면 문제가 발생한 코드의 위치를 ​​정확히 찾아내는 것이 쉽다는 것을 알았습니다. (저는 이것이 매우 큰 프로젝트에서는 실행 불가능할 수 있다는 것을 깨달았습니다. 제 경우에는 97개 파일 중 단 하나의 파일만이 문제를 일으켰습니다.)여기서 '빌드'는 컴파일을 의미하며 연결 ​​단계를 완료할 필요가 없으므로 해결되지 않은 외부 항목은 괜찮습니다. IS는 관계없이 업데이트해야 합니다.

IS를 업데이트하는 또 다른 방법(빌딩 제외)은 모든 것을 저장하고 작업 공간을 닫은 후 .ncb 파일을 삭제하고 다시 여는 것입니다.그런 다음 'Intellisense 업데이트 중...'을 기다립니다.(N)'을 선택하면 상태 표시줄에서 사라집니다. (N은 0으로 계산되며 끝까지 진행되지 않으면 문제가 발생한 부분의 진행 상황을 표시합니다.)나는 이것이 다소 지루하다고 생각했습니다.

이 문제에 대해 흥미로운 점을 발견했습니다(Visual Studio 2010에서).이 문제를 해결하기 위해 나는 변했어요 #include 이전에는 내 헤더 파일에 sintax가 있었습니다(이전 프로젝트는 VS 2005로 수행되었으며 VS 2010을 사용하여 다시 열림).

#include <myfile.h> 

그리고 나는 이것을 다음과 같이 수정합니다:

#include "myfile.h"

Intellisense가 올바르게 작동하기 시작하면!이것이 도움이 되기를 바랍니다!

설정을 재설정해야 했는데...

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE>devenv.exe /ResetSettings

여기에 관한 스레드

문제는 .vcproj 파일에 있습니다.

디버그 모드에서 릴리스 모드로 전환하고 빌드한 다음 intellisense를 사용해 보면 작동하는 경우가 많습니다.

Visual Studio를 닫습니다.프로젝트에서 .vcproj 파일을 검색하는 경우 해당 파일을 편집하고 추가IncludeDirectories의 처음 두 인스턴스를 검색하세요.이에 대한 값은 "../.."이 아닌 "..\,..\"와 같아야 합니다.

프로젝트를 다시 열고 Intellisense가 빌드를 마치면 수정되어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top