对函数调用的未定义引用
undefined reference to function call
我是C语言新手。我有一个作业,其中我必须利用多模块概念来编译程序。我不断收到 'undefined reference' 错误。该程序只是将华氏度转换为摄氏度;如果我只使用一个包含函数原型、调用和定义的脚本,它就可以正常工作,但是对于多模块概念,它会不断产生 'undefined reference' 错误。我必须将所有三个文件放在不同或相同的文件夹中吗?
conversion.c:
/*
* filename: conversion.c
* Purpose: The file contains function prototype
* to convert farenheit to celsius
*/
#include "conversion.h"
//conversion for farenheit to celsius
float convertTemp(float tmp)
{
return ((tmp-32)*0.555);
}
conversion.h:
/*
* FILENAME: conversion.h
* PURPOSE: The file contains function prototype
* for conversion.c
*/
float convertTemp(float tmp);
convert_driver.c:
/*
* FILENAME: convert_driver.c
* PURPOSE: The file contains main() function
* and user interface.
*/
#include <stdio.h>
#include "conversion.h"
int main(void)
{
float x,y;
printf("Please enter your temperature for conversion: \n");
scanf("%f", &x);
y = convertTemp(x);
printf("Converted Temperature: %0.2f\n", y);
return 0;
}
我一直收到以下行的错误:
y=convertTemp(x)
如有任何帮助,我们将不胜感激。
问题出在 linking 编译对象上。
尝试像这样手动编译您的源代码:
gcc -o convert_driver convert_driver.c conversion.c
这样编译之后,编译器就知道要做什么了link。
您还可以手动将源代码编译成对象,并使用静态 linker 生成可执行文件:
gcc -c -o convert_driver.o convert_driver.c
gcc -c -o conversion.o conversion.c
ld -o convert_driver convert_driver.o conversion.o
对于典型的 IDE,检查是否有 "Create Project" 选项。多文件支持通常属于 "a project".
的概念
我是C语言新手。我有一个作业,其中我必须利用多模块概念来编译程序。我不断收到 'undefined reference' 错误。该程序只是将华氏度转换为摄氏度;如果我只使用一个包含函数原型、调用和定义的脚本,它就可以正常工作,但是对于多模块概念,它会不断产生 'undefined reference' 错误。我必须将所有三个文件放在不同或相同的文件夹中吗?
conversion.c:
/*
* filename: conversion.c
* Purpose: The file contains function prototype
* to convert farenheit to celsius
*/
#include "conversion.h"
//conversion for farenheit to celsius
float convertTemp(float tmp)
{
return ((tmp-32)*0.555);
}
conversion.h:
/*
* FILENAME: conversion.h
* PURPOSE: The file contains function prototype
* for conversion.c
*/
float convertTemp(float tmp);
convert_driver.c:
/*
* FILENAME: convert_driver.c
* PURPOSE: The file contains main() function
* and user interface.
*/
#include <stdio.h>
#include "conversion.h"
int main(void)
{
float x,y;
printf("Please enter your temperature for conversion: \n");
scanf("%f", &x);
y = convertTemp(x);
printf("Converted Temperature: %0.2f\n", y);
return 0;
}
我一直收到以下行的错误:
y=convertTemp(x)
如有任何帮助,我们将不胜感激。
问题出在 linking 编译对象上。
尝试像这样手动编译您的源代码:
gcc -o convert_driver convert_driver.c conversion.c
这样编译之后,编译器就知道要做什么了link。
您还可以手动将源代码编译成对象,并使用静态 linker 生成可执行文件:
gcc -c -o convert_driver.o convert_driver.c
gcc -c -o conversion.o conversion.c
ld -o convert_driver convert_driver.o conversion.o
对于典型的 IDE,检查是否有 "Create Project" 选项。多文件支持通常属于 "a project".
的概念