Compartir a través de


Error del compilador C2356

el segmento de inicialización no debe cambiar durante la unidad de traducción

Causas posibles:

  • #pragma init_seg precedido por código de inicialización de un segmento.

  • #pragma init_seg precedido por otro #pragma init_seg.

Para resolverlo, mueva el código de inicialización del segmento al principio del módulo. Si deben inicializarse varias áreas, muévalas a módulos diferentes.

El ejemplo siguiente genera el error C2356:

// C2356.cpp
#pragma warning(disable : 4075)

int __cdecl myexit(void (__cdecl *)());
int __cdecl myexit2(void (__cdecl *)());

#pragma init_seg(".mine$m",myexit)
#pragma init_seg(".mine$m",myexit2)   // C2356