클래스를 구현하는 ATL 프로젝트가 있습니다 (VS에서 "인터페이스 구현"바로 가기를 사용하여 생성됨).). 자동으로 생성 된 STDAFX.H에는 다음이 포함Intellisense와 컴파일러의 차이점 : "이 이름의 네임 스페이스가 존재하지 않습니다."대 "클래스 또는 구조체 이름이 아닙니다."
#import "C:\path\to\base.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids, auto_search
내 클래스 (CPLUGIN
) 인터페이스 (IBase::IBaseClient
) 구현 :-이기 때문에
class ATL_NO_VTABLE CPLUGIN :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPLUGIN, &CLSID_PLUGIN>,
public IDispatchImpl<IPLUGIN, &IID_IPLUGIN, &LIBID_MyLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IBaseClient {
...
을, 인텔리이 IBaseClient "가 아닌 클래스 또는 구조체 이름입니다 불평 "하지만 잘 컴파일됩니다. 내가 using namespace IBase
을 추가하거나 완전히 기본 클래스 이름 (IBase::IBaseClient
)를받을 경우
는 다음 인텔리 오류가 없어지지 만, 컴파일러는 말한다 "IBase
:이 이름의 네임 스페이스가 존재하지 않는"컴파일되지 않습니다.
어떻게 IntelliSense와 컴파일러를 모두 행복하게 만들 수 있습니까?
인텔리 센스를 행복하게 만드는 것이 최우선 사항은 아닙니다. 가장 좋은 기회는 Microsoft에서 다음 업데이트를 업데이트하거나 업데이트 할 때까지 기다리는 것입니다. – nwp
아, 그래서 필자는 인텔리 센스 버그 일 뿐이야? – ZachB
Intellisense는 때로는 빨간색 구불 구불 한 부분을 완벽하게 미세한 코드로 표시하는 것으로 알려져 있습니다. 솔루션에서 마우스 오른쪽 버튼을 클릭하고 "솔루션 재검색"을 선택하여 squigglies를 추가하기 전에 인텔리 센스를 더 세게 생각하도록 강제 할 수 있습니다. – nwp