2011-10-27 51 views
8

我不知道为什么这会让我疯狂,但它是。我有一个在main中定义和转发的函数。extern在C++中的静态函数

static void myFunc(int x); 

static void myFunc(int x) 
{ 
    //do stuff 
} 

main() 

我想在另一个类中使用myFunc(int x)。所以我想我所要做的只是在该类头文件中使用extern static void myFunc(int x),然后在类定义中将其称为需要的地方,但它不起作用。

我在做什么错?

谢谢

回答

15

你不能一起使用extern和static,它们是互斥的。

static意味着内部链接
extern意味着外部链接

你需要,如果你需要外部链接,只使用extern

良好阅读:
what is external linkage and internal linkage in c++?

+0

好吧,这就是我想,但是当我从定义中删除静态的,它仍然不会建立。 –

+0

如果将声明维护为static void myFunc(int);则无论定义中是否存在static,函数*都将是* static。 –

+0

谢谢,我知道了,我删除了静态,并且我还在头文件中声明了错误。 –