Поделиться через


Ошибка компилятора C2356

Сегмент инициализации не должен изменяться во время единицы перевода

Возможные причины:

  • #pragma init_seg предшествует код инициализации сегмента

  • #pragma init_seg перед другим #pragma init_seg

Чтобы устранить проблему, переместите код инициализации сегмента в начало модуля. Если необходимо инициализировать несколько областей, переместите их в отдельные модули.

Следующий пример приводит к возникновению ошибки 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