问题
I'm getting this compiling error for my program when I try to compile/run it on Linux.
program7.c:9:18: conio.h: No such file or directory
make: *** [program7] Error 1
I don't know what function is causing this error in Linux. I read details about how conio.h
is not part of the C standard library.
My code:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int add(int a,int b); // declaration of add function
int multiply(int a,int b); // Prototype of multiply function
long int power(int num,int pow); // Prototype of power function
int sumOfPowers(int z, int y); // Prototype of Sum of power function
int calculateGcd(int x,int y); // Prototype of GCD function
int main(){
int num1,num2;
int sum,mul,total,gcd;
long int pow;
printf("Enter two positive integers, separated by a space, the first smaller than the second: ");
scanf("%d %d",&num1,&num2);
// Get Calculated sum from add function and assign to sum
sum = add(num1,num2);
printf("\nThe sum of %d to %d = %d\n",num1,num2,sum); // print sum output
// Get Calculated multiplication from multiply function and assign to mul
mul = multiply(num1,num2);
printf("\nThe product of %d to %d = %d\n",num1,num2,mul); // print multiply output
// Get power from power function and assign to pow
pow = power(num1,num2);
printf("\n%d to power of %d = %ld \n",num1,num2,pow); // print pow output
total = sumOfPowers(1,num2);
printf("\n The sum of powers of 2 from 1 to 2^%d = %d\n",num2,total); // print total output
// Get gcd value from calculateGcd function and assign to gcd
gcd = calculateGcd(num1,num2);
printf("\nThe GCD of %d and %d = %d\n",num1,num2,gcd); // print pow output
}
// Add function to add two number
int add(int a,int b){
if(b<=a){
return;
}
while(b>=a){
return b+add(a,b-1);
}
}
// Multiply function to multiply two number
int multiply(int a,int b){
if(a>b){
return;
}
while(a<b){
return a*multiply(a+1,b);
}
}
// Powet function to calculate power of two numbers
int i=1;
long int cal=1;
long int power(int num,int pow){
if(i<=pow){
cal=cal*num;
power(num,pow-1);
}
else
return cal;
}
int calculateGcd(int x,int y){
while (x != y)
{
if (x > y)
{
return calculateGcd(x - y, y);
}
else
{
return calculateGcd(x, y - x);
}
}
return x;
}
// Calculate the sum of powers from x to y
int total = 1;
int sumOfPowers(int z, int y){
int new;
while(z<=y){
new = pow(2,z);
total = total + new;
z++;
}
return total;
}
EDIT I tried removing the conio.h header all together. But I got the following error:
Undefined first referenced
symbol in file
pow /var/tmp//cc6jlZ6f.o
ld: fatal: Symbol referencing errors. No output written to program7
collect2: ld returned 1 exit status
make: *** [program7] Error 1
My Makefile:
program7: program7.c
gcc -o program7 program7.c
回答1:
conio.h
is indeed not a standard C header. I don't think you need it anyways. Just remove it.
Additionally you need to link the standard math library to use functions such as pow()
. Add -lm
to the compiler command line (yes, it's called just libm).
来源:https://stackoverflow.com/questions/26028179/conio-h-no-such-file-or-directory-using-linux