将结构的一个元素传递给C中的函数

时间:2019-01-27 00:57:18

标签: c function struct

我知道之前曾问过几个与我的问题类似的问题,并且我已经看过其中许多问题,但是我似乎找不到能准确回答我问题的问题。下面是我的代码的最小示例。它不太有效,对此我深表歉意。我真的不熟悉堆栈溢出和一般的编码。我正在尝试执行以下操作:

  1. 创建结构
  2. 创建结构的矢量实例
  3. 将矢量结构的一个元素传递给函数。

但是,当我这样做时,它将无法编译。它给出了以下错误:

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;
}

1 个答案:

答案 0 :(得分:1)

您拼写错误的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.