我很清楚函数原型,这个错误似乎是一个函数声明错误,这意味着我真的很困惑为什么我会看到这个警告并因此出现错误。
这几乎就像 gcc 完全忽略了我的函数原型。这是编译器错误吗?
为了简洁起见,我没有在单独的头文件中声明这个函数,尽管它应该没有什么区别。
gcc 输出:
$ gcc -Wall -std=c99 -pedantic primefactors.c
primefactors.c: In function ‘main’:
primefactors.c:8:5: warning: implicit declaration of function ‘largestprime’ [-Wimplicit-function-declaration]
primefactors.c: At top level:
primefactors.c:12:6: error: conflicting types for ‘largestprime’
primefactors.c:8:20: note: previous implicit declaration of ‘largestprime’ was here
代码:
#include <stdio.h>
#include <math.h>
long largetsprime(long);
int main()
{
printf("%d\n", largestprime(600851475143));
return 0;
}
long largestprime(long num)
{
int highest;
int mid = sqrt(num);
for (int i = 2; i < mid; i++) {
if (mid % i == 0) {
if (i % 1 == 0 && i % i == 0)
highest = i;
}
}
return highest;
}