Partager via


Erreur du compilateur C2356

un segment d’initialisation ne doit pas changer durant une unité de traduction

Causes possibles :

  • #pragma init_seg précédée du code d’initialisation de segment

  • #pragma init_seg précédé d’un autre #pragma init_seg

Pour résoudre ce problème, déplacez le code d’initialisation du segment au début du module. Si plusieurs zones doivent être initialisées, déplacez-les vers des modules distincts.

L’exemple suivant génère l’erreur 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