Поддерживает ли mingw безопасность clr?

Я хочу скомпилировать расширения C ++ для SQL Server из документы

Безопасный режим: запускать проверяемый типобезопасный код; скомпилировано с /clr:safe.

Поддерживает ли компиляция C ++ mingw /clr:safe?


person Evan Carroll    schedule 17.12.2017    source источник


Ответы (1)


Common Language Runtime (CLR) платформы Microsoft .NET не имеет приложения к компиляторам, отличным от Microsoft или .NET. Несколько портов Windows для GCC, которые могут быть обозначены словом "mingw", не относятся к .NET, нативным компиляторам. . Управляемый Microsoft C ++ - подобный языку, C ++ / CLI, к которому применяется /clr:safe, не является C ++.

/clr:safe указывает компилятору Microsoft создать выходной файл, не содержащий собственного кода, а только проверяемый типизированный код промежуточного языка Microsoft для управляемого выполнения с помощью CLR. По определению собственный компилятор не может предоставить эквивалентную возможность: они создают собственный код.

Если вас интересует как скомпилировать C ++ со строжайшей диагностикой, которую может предоставить GCC, усердный ответ будет утомительно долгим, поскольку существует множество вариантов для диагностики угловых случаев безопасности. Рассчитывайтесь хотя бы на:

-Wall -Wextra -pedantic

(см. 3.8 Параметры запроса или подавления предупреждений) и, возможно, пополнить список, следуя горькому опыту и нарастающей паранойе;)

Помимо обычной статической диагностики, другой уровень гигиены доступен благодаря большому -fsanitize=... семейству 3.11 Опции инструментария программы.

person Mike Kinghan    schedule 17.12.2017
comment
Управляемый Microsoft C ++ - подобный язык, C ++ / CLI, к которому применяется / clr: safe, не является C ++. это имеет такой смысл, что я искал информацию по этому поводу. У меня нет представления о MS ландшафте, поэтому я уверен, что это была ошибка новичка, но она попадает в самую точку. - person Evan Carroll; 17.12.2017
comment
В частности, я хотел использовать C ++ в SQL Server в Linux (или C), а не интерфейс командной строки. - person Evan Carroll; 17.12.2017