C中的static const void * method()

时间:2012-07-04 13:56:53

标签: objective-c c function-pointers void-pointers

我在一个我正在修补的程序中看到过这个:

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

根据我的理解,这将返回一个指向函数的指针。现在基于this,我试图找出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 个答案:

答案 0 :(得分:10)

不,该函数将返回const void*static将函数的可见性限制为文件范围。

答案 1 :(得分:3)

static表示该函数对编译单元(源文件)是私有的,在其外部不可见。

const void *表示返回值是指向常量内存的指针,即不应写入的内存。

答案 2 :(得分:1)

函数之前的

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

您提供的示例将返回

const void*

并且拒绝链接到此功能的任何外部引用。

答案 3 :(得分:0)

static const void *method()

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

void start()
{
  method();
}

在这里,来电者根本不对结果感兴趣。没有任何魔法发生。