Что означает следующая строка???
#pragma managed(push, off)
Это нужно при компиляции исходников на C++/CLI.
C++/CLI — это .NET-расширение языка C++. При выполнении кода C++/CLI участвуют две рантайм-библиотеки: нативная и управляемая. Некоторые правила для этих рантайм-библиотек отличаются (например, время создания статических объектов). Обычно функции компилируются в CLR-режиме, но вы можете явно указать нативный, совместимый со стандартом C++ режим, используя #pragma managed
.
При компиляции в нативном режиме эта функция «общается» с нативным рантаймом, а при компиляции в управляемом — в управляемом. В частности, нативная функция не может использовать управляемые типы (к примеру, System::String^
).
#pragma managed(push, off)
собственно означает «запомнить текущее состояние в стеке состояний, и установить нативный режим». В конце нативного участка обычно следует #pragma managed(pop)
, что восстанавливает предыдущее состояние из стека.
По поводу языковых различий управляемом и неуправляемом режимах, в документации есть полный список. В частности, не работает inline assembler и vprintf
.
Также, управляемые функции могут быть обнаружены в модуле при помощи рефлексии, в отличие от нативных.
Подключать стандартные заголовочные файлы лучше, понятно, в нативном режиме, раз соответствующие библиотеки были скомпилированы тоже в нативном режиме.
Виртуальный выделенный сервер (VDS) становится отличным выбором
при реализации этой задачи столкнулся с проблемой медленных вычислений
Есть n городов, которые необходимо соединить дорогами, так, чтобы можно было добраться из любого города в любой другой (напрямую или через...