我知道以前有人问过几个与我类似的问题,而且我也看过其中很多问题,但我似乎找不到一个能准确回答我的问题。下面是我的代码的一个最小示例。它不太有效,对此我深表歉意。我真的不熟悉堆栈溢出和一般编码。我正在尝试执行以下操作:
- 创建一个结构体
- 创建结构体的 vector 实例
- 将该 vector 结构的一个元素传递给函数。
但是,当我这样做时,它不会编译。它给出了以下错误:
make: *** [~~~~] Error 1
symbol(s) not found for architecture x86_64
其中“~~~~”是我的程序的名称。我觉得我的问题很简单,就像必须取消引用指针或其他东西,但无论我尝试什么,它都不起作用。任何帮助,将不胜感激。
typedef struct precinct {
int geoID;
long int neighbors[21];
double nhblength[21];
double perim;
double area;
int county;
int startdist;
int dist;
int pop;
int moe;
int nhbindex[21];
} Prec;
//prototypes
int checkAdjacency(Prec P);
int main(void)
{
Prec *SCPrec = malloc(2233 * sizeof(Prec));
/* In this space, I load in data for each precinct. For the sake of this MWE, I'll just show some of the data loaded for the first precinct */
SCPrec[0].geoID = 40351;
SCPrec[0].dist = 3;
SCPrec[0].pop = 781;
int value;
value = checkAdjacency(SCPrec[0]);
printf("%d\n",value);
return 0;
}
int checkAdjancency(Prec P)
{
if(P.dist==5)
{
return 1;
}
else return 0;
}
最佳答案
您checkAdjacency
拼写错误。
出于这个原因以及其他原因,除非有必要,否则我宁愿避免前向声明。
int checkAdjancency(Prec P)
{
...
}
int main(void)
{
...
value = checkAdjacency(SCPrec[0]);
...
}
这会给出更清晰的错误消息。
test.c:38:13: warning: implicit declaration of function 'checkAdjacency' is invalid in C99
[-Wimplicit-function-declaration]
value = checkAdjacency(SCPrec[0]);
^
1 warning generated.
关于c - 将结构体的一个元素传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384224/