C언어 구조체 정의인데... 오류가 뭔지 잘 모르겠습니다.

seojh1431의 이미지

typedef struct
{
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
}MD5_CTX;

이 구조체가 재정의라고 오류가 뜨는데 두번 정의한적이 없거든요. 첨부파일 올릴게요. 오류좀 봐주세요..

File attachments: 
첨부파일 크기
Package icon encryption.zip8.75 KB
yhsuk의 이미지

main.c에서 md5.h, md5.c를 모두 include해서 그렇습니다.
md5.c는 md5.h를 include하므로, main에서 md5.h를 두 번 include 한 거와 마찬가지가 됩니다.

소스파일(*.c)에서는 헤더파일(*.h)만 include해야 합니다.
md5.c를 컴파일한 오브젝트 파일을 링킹시키면 되구요.

이 문제와는 별개로 헤더파일도 다른 헤더파일을 include할 수 있으므로 여전히 중복 문제가 발생합니다.
보통은 C나 C++의 경우 헤더파일을 아래와 같이 전처리문으로 감싸 중복을 방지합니다.

#ifndef MD5_H__
#define MD5_H__

내용...

#endif

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

seojh1431의 이미지

오류를 찾았습니다^^