1

我在一个我正在修改的程序上看到了这个:

static const void *method()
{
 // other code
 return anotherMethod(param1,param2);
}

据我了解,这将返回一个指向函数的指针。现在基于,我试图弄清楚它static const void适用于什么:

int f(void);
int *fip(); //Function returning int pointer
int (*pfi)(); //Pointer to function returning int

那么添加的真正优势是什么static const(假设这应用于指定函数的返回值)。另外,是否会调用指向函数的返回指针?或者它只是一个指向它的指针?因为从代码中我有以下内容:

void start()
{
  method();
}

我假设它将被调用,否则它将被分配给一个指针。

4

4 回答 4

10

不,该函数将返回 aconst void*并且将static函数的可见性限制在文件范围内。

于 2012-07-04T14:01:17.063 回答
3

static意味着该函数对编译单元(源文件)是私有的,并且在它之外不可见。

const void *意味着返回值是一个指向常量内存的指针,即不应该写入的内存。

于 2012-07-04T14:05:14.923 回答
1

函数前的 static 关键字并不意味着它会返回一个静态变量。它只是意味着该功能是“静态的”。这意味着无法从“外部”对象(例如从另一个源文件编译的目标文件)访问此函数。

您给出的示例将返回

const void*

并且将拒绝链接到此函数的任何外部引用。

于 2012-07-04T14:03:08.013 回答
0
static const void *method()

它返回一个“const void *”。这可能是一个转换为 void* 的函数指针,但通常情况并非如此。

void start()
{
  method();
}

在这里,调用者根本对结果不感兴趣。根本没有什么神奇的事情发生。

于 2012-07-04T14:03:49.493 回答