这个函数定义如何工作?

nak*_*iya 6 c c++ compiler-construction syntax

gperf几天前我生成了一个哈希函数.我看到的hash功能对我来说是陌生的.它是这样的(我不记得确切的语法):

unsigned int
hash(str, size)
   register char* str;
   register unsigned int size;
{
   //Definition
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用C++编译器(g ++)进行编译时,由于没有strsize声明,它向我抛出了错误.但这是在C编译器(gcc)上编译的.所以,问题:

  1. 我认为C++是C的超集.如果是这样的话,这应该用C++编译器编译吧?
  2. C编译器如何理解定义?str并且size在他们第一次出现时是未申报的.
  3. 声明strsize函数签名之后但在函数体之前的目的是什么,而不是遵循在两个地方中的任何一个中执行它的正常方法?
  4. 如何在g ++上编译这个函数,以便在C++代码中使用它?或者我应该尝试从gperf生成C++代码?那可能吗?

Mat*_*hen 10

1. C++不是超集,虽然这也不是标准C.

2/3.这是一个K&R函数声明.请参阅ANSI C和K&R C之间的主要区别是什么? .

4.实际上,gperf确实有一个选项-L,用于指定语言.您可以-L C++使用C++.