我们可以访问一个文件中定义的静态函数到另一个文件吗?

时间:2012-02-11 13:40:00

标签: c++

我们可以访问一个文件中定义的静态函数到另一个文件吗? 在下面的代码中,我无法调用静态方法fun()。为什么我不能和其他方式访问它?

static void fun();// In abc.h
static void fun(){cout<<"Hello."<<endl;}

//xyz.cpp
#include "abc.h"
void main()
{
    fun();// Why I am not able to call this static method? Is there any other way to
          //Access this static function?
}

2 个答案:

答案 0 :(得分:4)

因为这就是static(关于自由函数和全局变量)的工作方式。它应该这样做:限制对当前编译单元的访问。大多数C / C ++编译器通过使用源文件名修改函数名来实现此目的。

理论上,你可以分解修改,在运行时定位可执行文件中的受损函数,并执行一些程序集伏都教来强制执行函数调用,但这将是脆弱的,依赖于平台的,并且一般的痛苦 - 我怀疑你是否可以将它付诸实践。如果你想从其他地方调用它,就不要声明函数是静态的。

答案 1 :(得分:0)

您可以传递函数指针( static 函数的指针)并在文件中使用它。