当前位置:  开发笔记 > 运维 > 正文

将struct传递给函数会得到'undefined reference to'错误

如何解决《将struct传递给函数会得到'undefinedreferenceto'错误》经验,为你挑选了1个好方法。

我在与C练习期间遇到了一个问题,希望有人能够帮助我.后面的故事是我想要深入了解如何使用结构,所以我开始使用这个概念,但是当我开始使用数组并开始将结构传递给函数时遇到了问题.

当我在Linux中使用G ++编译我的代码时,我得到一个编译错误:

/tmp/ccCjoSgv.o: In function `main':
main.c:(.text+0x10e): undefined reference to `indexBooks(int, book)'
collect2: error: ld returned 1 exit status

我花了几个小时试图通过类似的Stack Overflow问题来解决这个问题,但仍然无法理解为什么我会收到这个编译错误.谁能提供他们的专业知识并解释我为什么会收到这些错误?

book.h

struct book{
  char title[100];
  char author[100];
  unsigned int bin;
};

主要包括

#include 
#include 
#include "books.h"

主要原型

void askUsrNum(int*);
void indexBooks(int, struct book science);

在main()里面

int usrNum;
struct book science[usrNum];
... plus the code below...

主要功能调用

askUsrNum(&usrNum); //ask user how many books to catalog
indexBooks(usrNum, *science);   //record the books using struct

实际功能

void askUsrNum(int *usrNum){
    printf("How many books are you cataloging: ");
    scanf("%i", usrNum);

    return;
}

void indexBooks(int usrNum, struct book science[]){

   int i = 0;
   int limit = (usrNum -1);
   for(i = 0; i <= limit; i++){
       printf("Book %i Title: ", i+1);
       scanf("%s", science[i].title);

       printf("Book %i Author: ", i+1);
       scanf("%s", science[i].author);

       printf("Book %i BIN: ", i+1);
       scanf("%i", &science[i].bin);

       printf("\n");    //newline

       return;
   }
}

Chris Vig.. 5

您声明的原型与您的函数定义不匹配.你宣布:

void indexBooks(int, struct book science);

但是你要定义:

void indexBooks(int usrNum, struct book science[])

请注意定义中的括号.你的声明声明一个函数,它接受一个struct book说法,但定义需要一个阵列struct book秒.您应该将声明更改为void indexBooks(int usrNum, struct book science[]).



1> Chris Vig..:

您声明的原型与您的函数定义不匹配.你宣布:

void indexBooks(int, struct book science);

但是你要定义:

void indexBooks(int usrNum, struct book science[])

请注意定义中的括号.你的声明声明一个函数,它接受一个struct book说法,但定义需要一个阵列struct book秒.您应该将声明更改为void indexBooks(int usrNum, struct book science[]).

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有