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

标签 c function struct

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

  1. 创建一个结构体
  2. 创建结构体的 vector 实例
  3. 将该 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/

相关文章:

c - 在 automake 中使用条件语句

python - 使用 Python 解析 IFF 样式数据

python - 使用不存在的可选参数运行函数

java - 如何在 jnr ffi 中使用结构体和结构体

c++ - 指向结构体访问冲突写入位置的指针

c - 在循环中使用 scanf() 扫描 CSV 文件在第一行和第二行开始后停止

c++ - 将 NON-POD 类型传递给 Variadic 函数是未定义的行为?

使用 ANSI C 计算先到先服务的等待时间

function - 重新分配指针函数参数

javascript - ReactJS | OnSubmit 不是 Formik 的函数