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