我在一个我正在修补的程序中看到过这个:
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();
}
我假设它将被调用,否则它将被分配给指针。
答案 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();
}
在这里,来电者根本不对结果感兴趣。没有任何魔法发生。