我正在制作一个菜单系统,用户输入一定数量的数字,然后系统输出平均值和总和,然后显示用户输入系统的数字,但是自从我输入以来我无法走远得到此错误消息“clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)”。
#include <stdio.h>
#include <stdlib.h>
#define LIMIT 1000
#define PAUSE system("pause")
//prototype functions
int getChoice();
int getNumbers(int numbers[], int eSize);
void displayAllNumbers(int array[], int eSize);
void displayAverage(int numbers[], int eSize);
void showSum(int numbers[], int eSize);
int main(){
int choice;
int numbers[LIMIT] = {0};
int eSize = 0;
do{
choice = getChoice();
switch(choice){
case 1: //get a bunch of numbers from user
eSize = getNumbers(numbers, eSize);
break;
case 2: //show the sum of the user-entered numbers
showSum( numbers, eSize);
break;
case 3: //show the average of the user-entered numbers
displayAverage(numbers, eSize);
break;
case 4: //show the numbers
displayAllNumbers(numbers , eSize);
break;
case 5: //quit the program
printf("thank you for using my program!\n");
PAUSE;
break;
default:
printf("invalid choice... please try again!\n");
PAUSE;
break;
}//end of switch
}while(choice != 5);
//end of dowhile
}//end of main```
当编译器找不到程序中使用的函数定义时,通常会发生链接器错误。您可能没有编译其他源文件。如果定义功能:
int getChoice();
int getNumbers(int numbers[], int eSize);
void displayAllNumbers(int array[], int eSize);
void displayAverage(int numbers[], int eSize);
void showSum(int numbers[], int eSize);
在另一个文件中说functions.c
和main.c
包含main()
函数然后你将必须编译为clang main.c functions.c <other options> -o <output file>
您显示的源文件仅包含main()
的定义。其他辅助函数如getChoice()
等只是声明,并且当前文件中缺少定义。如果这些辅助函数的定义在其他文件中,那么也应该编译它们。
假设main()
包含在main.c
中,辅助函数在helper.c
中,那么在gcc中编译它们的命令就是
gcc main.c helper.c -o executive_name
解决这个问题的一个更好的方法是将所有函数原型(也就是声明)放在头文件中,例如helper.h
,并在main.c
和helper.c
中包含帮助文件。