C 언어를 사용하여 프로그램에서 스택을 구현하려고합니다. 나는 그들을 3 개의 파일로 분리한다..c 파일에 .h 파일을 포함하면 LNK2005가 발생합니다.
먼저 stack.h 파일. 여기에는 Pop, Push와 같은 필수 선언과 함수가 스택에 포함됩니다. 두 번째로 stack.c 파일. stack.h 파일 안에 함수를 구현 한 파일이다. 필자의 경우 동적 배열을 사용하여 스택을 구현한다. 셋째, main.c 파일. 스택을 사용하여 계산을 수행하는 곳입니다.
그러나 LNK2005 (... obj에서 이미 정의 됨) 끝에 컴파일 오류가 발생합니다. 나는 여러 번 정의가 존재할 때이 오류가 발생할 것을 안다. 그러나 .h/.c 파일에서 동일한 함수 이름을 가진 많은 예제를 보았지만 오류는 발생하지 않았습니다. 당신을 위해 친절하게 관심
LNK1169 one or more multiply defined symbols found
LNK2005 _CreateStack already defined in main.obj
LNK2005 _IsEmpty already defined in main.obj
LNK2005 _Pop already defined in main.obj
LNK2005 _Push already defined in main.obj
LNK2005 _StackDepth already defined in main.obj
감사 : 여기
오류 로그입니다. 여기에 내 stack.h 파일이 있습니다.typedef struct Stack Stack;
Stack* CreateStack();
void Push(Stack *s, char InputString);
void Pop(Stack *s);
int StackDepth(Stack *s);
int IsEmpty(Stack *s);
여기에 내 stack.c 파일이 있습니다.
#include "stack.h"
typedef struct Stack{
.....
.....
}
Stack* CreateStack(){
......
};
void Push(Stack *s, char InputString){
....
....
}
void Pop(Stack *s){
....
};
int StackDepth(Stack *s){
....
};
int IsEmpty(Stack *s){
....
};
여기 내 main.c의 파일
당신은 당신의 기본 파일에 C 파일을 포함했다#include<stdio.h>
#include"stack.c"
#include"stack.h"
int main(){
....
....
....
return 0;
}
실제 링크 오류를 표시하기 위해 질문을 편집 할 수 있습니까? 함수 정의의 끝에서 세미콜론을 버리면 쓸모가 없습니다. –
관심을 가져 주셔서 감사합니다. 잘 편집되었습니다. – Hugo