2011-06-13 14 views

Respuesta

17

Yes. Yes, it is.

inicializadores estáticos pueden llamar funciones, siempre y cuando estén en su alcance. (Redacción 2003, 8/2)

[dcl.decl]:

valores iniciales también se pueden especificar en un declarador; los inicializadores son discutidos en 8.5 y 12.6.

(redacción de 2003, 8,5/2)

[dcl.init]:

automática, registro, estática, y variables externas de ámbito espacio de nombres puede ser inicializado por arbitrarias expresiones que implican literales y previamente declarado variables y funciones.

(No se deje engañar por la falta de la palabra clave static, que tiene todo tipo de significados. La variable de myvar se declara en el alcance de espacio de nombres, y por lo tanto tiene una duración de almacenamiento estático .)

+2

Si Haga esto, tenga cuidado con los problemas de los pedidos: no hay garantía de qué orden ejecutan los inicializadores estáticos cuando están en diferentes unidades de traducción. Si los inicializadores no usan ninguna otra variable global, por supuesto, no hay problema. – bdonlan

+0

@bdonlan: Muy bien. –

Cuestiones relacionadas