2011-10-27 18 views
8

No sé por qué esto me está volviendo loco, pero lo es. Tengo una función definida y forward declarada en main.extern en una función estática en C++

static void myFunc(int x); 

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

main() 

Quiero usar myFunc (int x) en otra clase. Así que creo que todo lo que tengo que hacer es extern static void myFunc (int x) dentro de ese encabezado de clases y luego simplemente llamarlo a donde necesito en la definición de la clase, pero no funcionará.

¿Qué estoy haciendo mal?

Gracias

Respuesta

15

No puede utilizar extern y estático juntos son mutuamente excluyentes.

static significa enlace interno
extern significa enlazado externo

Es necesario utilizar solamente extern si necesita exterior del elevador.

Buena lectura:
what is external linkage and internal linkage in c++?

+0

Ok, eso es lo que pensé, pero cuando quito la estática de la definición, todavía no va a construir. –

+0

Si mantiene la declaración como 'static void myFunc (int);' la función * será * 'estática' independientemente de la presencia de' static 'en la definición. –

+0

Gracias, lo tengo, eliminé la estática, y también lo declaro mal en el encabezado. –

Cuestiones relacionadas