【发布时间】:2018-05-21 02:55:11
【问题描述】:
我正在尝试运行我的程序,但它一直出错。
我有 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'
【问题讨论】:
-
你是如何构建的?编译像这样的东西
gcc -Wall a1ms4.c contacts.c -o conatact -
您使用的完整编译命令是什么?我读到这个错误的方式是你告诉编译器
getName...即将到来(通过contacts.h)但从未真正编译过该函数或将其链接。 -
你可能没有编译和链接contacts.c
-
“%30[&\n]”是一个奇怪的格式字符串 -
我使用的是 Windows IDE,dev-c++。 Visual Studio 也会出现同样的错误。 contacts.c 已编译,不必将其包含在 main.c 中。它通过contacts.h 的指针工作。老师没有要求我们在 a1ms4.c 中包含contacts.c 那个格式字符串只是为了确保不超过30个字符被保存,并且它保存到换行(回车)irrc
标签: c function linker-errors undefined-reference dev-c++