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


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

"переменная": символ, объявленный с __declspec(process), должен быть констант в /clr:pure mode

Замечания

Параметры компилятора /clr:pure и /clr:safe компилятора устарели в Visual Studio 2015 и не поддерживаются в Visual Studio 2017.

По умолчанию переменные относятся к домену приложения в разделе /clr:pure. Переменная, помеченная __declspec(process) в разделе /clr:pure , подвержена ошибкам при изменении в одном домене приложения и чтении в другом.

Таким образом, компилятор применяет переменные процесса в const /clr:pure, что делает их чтение только во всех доменах приложений.

Дополнительные сведения см. в разделе "Процесс" и /clr (компиляция среды CLR).

Пример

В следующем примере создается C2441.

// C2441.cpp
// compile with: /clr:pure /c
__declspec(process) int i;   // C2441
__declspec(process) const int j = 0;   // OK