VC ++ .Net Clr / Safe и Clr / Pure - PullRequest
       24

VC ++ .Net Clr / Safe и Clr / Pure

3 голосов
/ 21 августа 2010

В VC ++ .Net, Что означает Clr / Safe (/clr:safe) и Clr / Pure (/clr:pure)?

Ответы [ 2 ]

3 голосов
/ 21 августа 2010

Из документа :

/ clr: pure Производит Microsoft Промежуточный язык (MSIL) - только выходной файл, который не имеет родной исполняемый код Тем не менее, это может содержат нативные типы, скомпилированные в MSIL.

/ clr: safe Создает только MSIL (нет собственный исполняемый код), проверяемый выходной файл. / clr: безопасное включение проверка диагностики (PEVerify Инструмент (Peverify.exe)).

0 голосов
/ 17 декабря 2017

Не думаю, что этой информации достаточно. Из другого ответа казалось, что это просто проверка типов. Из этого документа кажется, что это намного больше.

Когда используется /clr (не /clr:pure или /clr:safe), а __clrcall не используется, взятие адреса функции всегда возвращает адрес собственной функции точки входа. Когда используется __clrcall, собственная функция точки входа не создается, поэтому вы получаете адрес управляемой функции, а не функцию thunk точки входа. Для получения дополнительной информации см. Double Thunking.

/clr (Common Language Runtime Compilation) подразумевает, что все функции и указатели функций __clrcall, и компилятор не позволит функции внутри компиляции помечать что-либо кроме __clrcall. Когда используется / clr: pure, __clrcall можно указывать только для указателей функций и внешних объявлений.

...