我的函数 "inverse" 的类型冲突,它被设计为 return long long 类型

conflicting types for my function "inverse", which is designed to return long long type

我试图弄清楚我在这里做错了什么,基本上这个函数是计算 module 逆数到 a-1 mod米。但程序出现错误。

有人可以指出导致错误的原因吗?

//calculating the inverse of the public key, for getting private key d. long     
long long inverse(long long a, long long m) 
{ 
   long long p = a, q = m, t; 
   //Euclidean algorithm 
   long long x = 0, y = 1, z = (long long)q/p; 

   //start recursion 
   while(p != 1 && q != 1) 
   {
       t = p; 
       p = q % p; 
       q = t; 
       t = y; 
       y = x - y * z; 
       x = t; 
       z = (long long)q/p; 
   } 

   y = (long long)y % m; 
   if(y < 0) 
   { 
      y += m; 
   } 

   //return inverse number; 
   return y; 
}

您声明了一个与函数定义不匹配的函数原型,如何做到这一点的示例,将以下内容放在文件顶部或头文件中

int inverse(int a, int n);

然后你的定义是

long long inverse(long long a, long long n)
{
}

这里的问题是以下之一:

  1. 你有一个与函数定义不匹配的前向声明,正如@iharob先生在中正确提到的.
  2. 根本没有前向声明。该函数已被使用(调用)它被定义之前。因此,隐式声明(int return,接受任意数量的参数)与实际定义冲突。