对c中指针的未定义引用

时间:2017-12-07 04:31:55

标签: c function linker-errors undefined-reference dev-c++

我试图运行我的程序,但它一直出错。

我有3个文件,将包含3个不起作用的函数之一的代码。

文件: contacts.h

struct Name{
    char firstName[31];
    char middleInitial[7];
    char lastName[36];
};

struct Contact{
    struct Name name;
};

// function prototype:
void getName(struct Name *);

档案: contacts.c

#include <stdio.h>
#include “contacts.h”

void getName(struct Name *name)
{
    printf(“Please enter the contact’s first name: “);
    scanf(“%30[&\n]”, name->firstName);   
}

文件: a1ms4.c

#include <stdio.h>
#include “contacts.h”

int main(void)
{
    struct Contact contact = { {0} };
    getName(&contect.name);
    printf(“Contact first name: %s\n”, contact.name.firstName);

    return 0;
}

我知道为什么会收到此错误:

a1ms4.c:(.text+0x53): undefined reference to `getName'

2 个答案:

答案 0 :(得分:0)

可能你正在以错误的方式编译它。 试试这个 gcc -c a1ms4.c gcc -c contacts.c gcc -Wall a1ms4.o contacts.o -o contact

答案 1 :(得分:0)

我只是希望

#include “contacts.h”

实际上是

#include "contacts.h"

请注意,"

不同

这个也是如此:

scanf(“%30[&\n]”, name->firstName);

以及这些:

printf(“Please enter the contact’s first name: “);
printf(“Contact first name: %s\n”, contact.name.firstName);

确保您的包含路径中只有一个版本的contacts.h,并且您已包含您想要的确切文件。