Я делаю простой проект в C, в котором на данный момент я использую две структуры: Player и Card. Я создал две структуры в разных файлах заголовков, потому что функции в Player используют Card, а также другие элементы, которые я еще не сделал. Когда я пытаюсь использовать getId () в Player, компилятор VSCode говорит:
ссылка на внешний символ _getId не разрешена в _discardCard ()
код card.h :
#include <stdbool.h>
typedef struct card{
int id;
bool black;
int numElems;
char* text[3];
}card;
card* initCard(int id,bool black,char* text[],int numElems)
int getId(card* c);
карта. c код:
#include "carta.h"
#include<stdio.h>
#include <stdbool.h>
#include <stdlib.h>
...
int getId(carta* c){
return c->id;
}
Вместо этого код для Player.h:
#include "card.h"
#define CARDSMAX 5
typedef struct{
bool master;
int id;
int points;
char* nickname;
card* cards[CARDSMAX];
int NumCards;
}player;
... //other functions
card* discardCard(int id,player* g);
Код для Player. c это:
#include "player.h"
#include <stdio.h>
#include <stdlib.h>
player* initPlayer(char* nickname,int id){
player* g=(player*) malloc(sizeof (player));
g->id=id;
g->nickname=nickname;
g->master=false;
g->points=0;
g->NumCards=0;
for(int i=0;i<CARDSMAX;i++){
g->cards[i]=(card*)malloc(sizeof(card));
}
return g;
}
....
card* DiscardCard(int id,player* g){
for(int i=0;i<CARDSMAX;i++){
card* c=g->cards[i];
if(getId(c)==id){
card* e= g->cards[i];
g->cards[i]=NULL;
g->NumCards--;
return e;
}
}
return NULL;
}
Кто-нибудь может мне помочь? (Если вы видите некоторую несогласованность в коде, это потому, что я пробовал быстрый перевод с моего языка)