2013-08-14 2 views
2

Visual Studio 2010에서 C 프로그램을 작업하고 있습니다. GUID를 만들고 비교해야합니다.C에서 두 GUID 비교

나는 "#include guiddef.h"를 내 progarm에 포함시키고 있습니다.

다음 코드 스 니펫이 있지만 코드를 컴파일 할 때 오류가 계속 발생합니다.

//mainGUID is assign value in the program 
GUID mainGUID; 

//Function call which compares passed GUID with the mainGUID 
int CheckGUID(GUID guid) 
{ 
    if(IsEqualGUID(guid,mainGUID)) 
    return 1; 
    else 
    return 0; 
} 

나는 오류 다음 얻을

Error 3 error C2172: 'memcmp' : actual parameter is not a pointer : parameter 1 

Error 3 error C2172: 'memcmp' : actual parameter is not a pointer : parameter 2 

무슨 일이 일어나고 있는지 확실하지.

답변

4

함수는 IsEqualGUIDREFGUID 파라미터 취

BOOL IsEqualGUID(
    _In_ REFGUID rguid1, 
    _In_ REFGUID rguid2 
); 

을 그리고 REFGUIDtypedef GUID* REFGUID이다.

IsEqualGUID(&guid, &mainGUID) 
      ^ ^

주의 할의 강사 : 그래서 당신은 멀리 얻을 수 있습니다 정말 IsEqualGUID 어떤 경험이없는,이 MSDN에서 모든 (그리고 오류 메시지가 또한 예,이쪽으로 점).

+0

프로젝트 속성이 "기본값으로"컴파일되고 "Complex C 코드 (/ TC)"로 설정되어 있지 않으면 "&"가 작동합니다. 프로젝트가 잘 컴파일되므로 제대로 작동하는지 확인할 수 있습니다. – Ash24

+0

네,'IsEqualGUID'는 후드에서'memcmp'를 호출하고,'memcmp'는 포인터를 매개 변수로 기대합니다. –