无法解析的外部符号 _star,sort,该符号在函数 _main 中被引用解决方案

无法解析的外部符号 _star,_sort,该符号在函数 _main 中被引用
就是这个程序,无法解析的外部符号 _star,_sort,该符号在函数 _main 中被引用


#include <stdio.h>

#define num 10    //  十个评委
void  star(void);           //打印星号
void  sort(float score[]);    //从小到大排序

int main()
 {    
    int i;
    float sum=0;
    float average;
    float score[10];

   star();  //打印星号
  
    printf("请输入每个评委给您打的分数\n");
    for(i=0; i<num; i++)
    {  
     printf("第%2d各评委打的分数为:", i+1);
        scanf("%f", &score[i]);
    }
   
    sort(score);

   for(i=1; i<num-1; i++)   //求去最高最低分后的总分
   {
        sum+=score[i];
    }
    average=sum/8;     //求平均分
     
    printf("\n去掉的最高分为:%0.2f\n", score[num-1]);
    printf("\n去掉的最低分为:%0.2f\n", score[0]);
       printf("\n去掉最高分最低分后,您的总分为:%0.2f\n", sum);
    printf("\n去掉最高分最低分后,您的平均分为:%0.2f\n", average);
      
    printf("\n哈哈, 谢谢您的合作!\nGOOD BYE!\n");
       star();  //打印星号

   return 0;
 }

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

star和sort的定义在哪里?


void  star(void);           //打印星号
void  sort(float score[]);    //从小到大排序
这个不算定义么


这是声明,不是定义。
声明是说“有这么一个函数”,
定义是说“这个函数做什么”。



那该怎么定义,求教


例如这样(当然内容要你自己写):

void star(){
   //此处是你所想要实现的代码
}



void  star(void);          
void  sort(float score[]);
那你的跟我的有什么区别    

我的意思是,你要在里面填上内容。。。
------解决思路----------------------
引用:
Quote: 引用:

这是链接错误,你的star和sort函数定义在哪里,你要在定义main函数的文件中定义包含#include这个头文件。


什么include

这是一种设计方法吧,比如你创建一个头文件FunDef.h,在里面声明
void  star(void);          
 void  sort(float score[]);
 

然后你再创建一个cpp文件FunDef.cpp,在里面写上函数的实现,然后在main函数所在的文件中
#include"FunDef.h"

这种设计便于以后扩展,当然你也可以在main函数所在的文件中定义这两个函数。你的写法是声明,非virtual函数,它的函数调用地址是在编译链接的时候确定的,其实要确定的就是函数的入口地址,但是只有声明没有定义的函数系统是不会分配地址,所以你这里报了链接错误。