2011-12-25 1 views
0

아래이 오류를 생산하고 내 코드 : 정말이 붙어 있어요런타임은 체크 실패 -없이 사용중인 변수가 초기화되는

Run-Time Check Failure #3 - The variable 'IBlockObject' is being used without being initialized

. 초기화 문제가 있다는 것을 알고 있지만이를 해결하는 방법을 모르겠습니다.

typedef struct{ //ISTATUS Structure 
    long statusBit; 
}ISTATUS; 

typedef struct{ // INODE Structure 
    char fileName[20]; 
    long INodeNumber; 
    long BlockAddress; 
    long NextINodeAddress; 
}INODE; 

typedef struct{ //IBLOCK Structure 
    long BlockNumber; 
}IBLOCK; 

ISTATUS IStatusObject; 
INODE INodeObject; 
IBLOCK IBlockObject; 


InitializeStructures(IStatusObject, INodeObject, IBlockObject); 
+1

왜 이것을 3 개 언어로 표시 했습니까? 솔직히 컴파일러에서 똑같은 코드를 세 가지 다른 언어로 컴파일하려고합니까? 그리고 당신은'InitializeStructures'의 서명을 보여 주어야합니다. – tenfour

답변

2

난 당신이 C++을 의미 가정합니다, 나는 가정거야 InitializeStructures의 서명은 다음과 같습니다 :

void InitializeStructres(ISTATUS a, INODE b, IBLOCK c) 

문제는 당신이 에 의해 개체를 전달하는 여기에 코드입니다 . InitializeStructures은 전달중인 객체의 자체 복사본을 가져오고, 무엇이든 InitializeStructures은 전달한 객체에 반영되지 않습니다.

복사 작업으로 인해 오류가 발생합니다. 객체를 초기화하지 않고 객체를 복사하려고 시도하고 있습니다 ("객체 사용").

나는 다음과 같이 함수 서명을 만들고 싶어 가정

void InitializeStructres(ISTATUS& a, INODE& b, IBLOCK& c) 

그래서 InitializeStructures가하는 하지이 개체를 복사; 대신 참조로 전달 된 객체에서 직접 작동합니다.

빠른 참고 사항 : 유형/변수 이름은 실제로 표준이 아닙니다. IStatusObject과 같은 이름은 일반적으로 인터페이스입니다 (예 : IUnknown). 모든 대문자 이름은 대개 레거시 또는 C 기호입니다.

+0

정말 도움 주셔서 감사하지만이 문제는 Visual Studio에서 구문 오류를 제공합니다. – user1115541

관련 문제