C言語を使用してプログラムにスタックを実装しようとしています。それらを3つのファイルに分けます。
まず、stack.h ファイル。スタックのPop、Pushなど、いくつかの重要な宣言と関数が含まれています。次に、stack.c ファイル。stack.h ファイル内の関数を実装したファイルです。私の場合、動的配列を使用してスタックを実装します。3 つ目は、main.c ファイルです。ここで Stack を使用して計算を行います。
しかし、最後に 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ファイルです
#include<stdio.h>
#include"stack.c"
#include"stack.h"
int main(){
....
....
....
return 0;
}