C 程序中未定义的函数引用
Undefined reference to function in C program
我是 C 编程的新手。老实说,这是我第一个使用 Function 的程序。但它不起作用。谁能告诉我应该是什么问题?
// Convert freezing and boiling point of water into Fahrenheit and Kelvin
#include<stdio.h>
void calculation(int);
void freezingCalculation(void);
void boilingCalculation(void);
int main (){
int temperature, fahrenheit, kelvin;
void freezingCalculation(void){
int temperature = 0;
calculation(temperature);
printf("Freezing point in Fahrenheit is %d. \n", fahrenheit);
printf("Freezing point in Kelvin is %d. \n", kelvin);
}
void boilingCalculation(void){
int temperature = 100;
calculation(temperature);
printf("Boiling point in Fahrenheit is %d. \n", fahrenheit);
printf("Boiling point in Kelvin is %d. \n", kelvin);
}
void calculation(int temperature){
//Temperature in fahrenheit
fahrenheit = ((temperature * 9) / 5) + 32;
//Temperature in Kelvin
kelvin = temperature + 273;
}
}
问题是,您试图在 main()
函数 内部 定义函数。这在纯 C 中是不允许的。Some compiler extensions allows "nested functions", but that's not part of the standard.
这里发生的事情是,编译器看到了函数声明,但找不到函数的任何定义,因为它们不在文件范围.
您需要将函数定义移出 main()
并根据要求调用 main()
中的函数。
you did not call your function.
在主函数之外编写您的方法(freezingCalculation 等)并且不要忘记 return 因为您的主函数 return 类型是 integer.Like--
#include <stdio.h>
int temperature, fahrenheit, kelvin;
void calculation(int);
void freezingCalculation(void);
void boilingCalculation(void);
int main (){
freezingCalculation();
boilingCalculation();
return 0;
}
void freezingCalculation(void){
int temperature = 0;
calculation(temperature);
printf("Freezing point in Fahrenheit is %d. \n", fahrenheit);
printf("Freezing point in Kelvin is %d. \n", kelvin);
}
void boilingCalculation(void){
int temperature = 100;
calculation(temperature);
printf("Boiling point in Fahrenheit is %d. \n", fahrenheit);
printf("Boiling point in Kelvin is %d. \n", kelvin);
}
void calculation(int temperature){
//Temperature in fahrenheit
fahrenheit = ((temperature * 9) / 5) + 32;
//Temperature in Kelvin
kelvin = temperature + 273;
}
我是 C 编程的新手。老实说,这是我第一个使用 Function 的程序。但它不起作用。谁能告诉我应该是什么问题?
// Convert freezing and boiling point of water into Fahrenheit and Kelvin
#include<stdio.h>
void calculation(int);
void freezingCalculation(void);
void boilingCalculation(void);
int main (){
int temperature, fahrenheit, kelvin;
void freezingCalculation(void){
int temperature = 0;
calculation(temperature);
printf("Freezing point in Fahrenheit is %d. \n", fahrenheit);
printf("Freezing point in Kelvin is %d. \n", kelvin);
}
void boilingCalculation(void){
int temperature = 100;
calculation(temperature);
printf("Boiling point in Fahrenheit is %d. \n", fahrenheit);
printf("Boiling point in Kelvin is %d. \n", kelvin);
}
void calculation(int temperature){
//Temperature in fahrenheit
fahrenheit = ((temperature * 9) / 5) + 32;
//Temperature in Kelvin
kelvin = temperature + 273;
}
}
问题是,您试图在 main()
函数 内部 定义函数。这在纯 C 中是不允许的。Some compiler extensions allows "nested functions", but that's not part of the standard.
这里发生的事情是,编译器看到了函数声明,但找不到函数的任何定义,因为它们不在文件范围.
您需要将函数定义移出 main()
并根据要求调用 main()
中的函数。
you did not call your function.
在主函数之外编写您的方法(freezingCalculation 等)并且不要忘记 return 因为您的主函数 return 类型是 integer.Like--
#include <stdio.h>
int temperature, fahrenheit, kelvin;
void calculation(int);
void freezingCalculation(void);
void boilingCalculation(void);
int main (){
freezingCalculation();
boilingCalculation();
return 0;
}
void freezingCalculation(void){
int temperature = 0;
calculation(temperature);
printf("Freezing point in Fahrenheit is %d. \n", fahrenheit);
printf("Freezing point in Kelvin is %d. \n", kelvin);
}
void boilingCalculation(void){
int temperature = 100;
calculation(temperature);
printf("Boiling point in Fahrenheit is %d. \n", fahrenheit);
printf("Boiling point in Kelvin is %d. \n", kelvin);
}
void calculation(int temperature){
//Temperature in fahrenheit
fahrenheit = ((temperature * 9) / 5) + 32;
//Temperature in Kelvin
kelvin = temperature + 273;
}