Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
5 / 5 / 2
Регистрация: 31.07.2010
Сообщений: 62

Есть ли в C# что-нибудь типа "#if unsafe"

30.01.2012, 12:58. Показов 1849. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть ли в C# что-нибудь типа:
C#
1
2
3
4
5
#if unsafe
// если включен небезопасный код идем сюда
#else
// иначе идем сюда
#endif

P.S: использую Framework 3.5, WinForm
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2012, 12:58
Ответы с готовыми решениями:

Можка у кого-нибудь есть что-нибудь по Lot-801
Добрый день. Хотел спросить, может у кого-нибудь завалялось какая-нибудь информация по LOT-801? Примеры вопросов или ещё что-нибудь...

Есть ли в JavaScript что-нибудь, что сможет хранить несколько двумерных массивов?
Доброго времени суток, в C# есть класс list в который можно засунуть все, что угодно. Так например в нем лежит n количество двумерных...

Есть ли что-нибудь?
логи прикрепил. В safemode не грузится, выбивает в "синий экран" DWeb LiveCd все нормально. Заранее спасибо

4
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
30.01.2012, 23:37
Цитата Сообщение от dr.kernel Посмотреть сообщение
Есть ли в C# что-нибудь типа:
Директивы компилятору? Есть.
0
5 / 5 / 2
Регистрация: 31.07.2010
Сообщений: 62
31.01.2012, 04:15  [ТС]
Цитата Сообщение от ibmpc Посмотреть сообщение
Директивы компилятору? Есть.
Нужна директива для работы с unmanaged кодом. Ну т.е. есть у нас 2 алгоритма, один работает быстрее, но использует unsafe.
Необходимо реализовать следующее: если у нас разрешено использование небезопасного кода, тогда используем первый алгоритм, иначе второй.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8728 / 3680 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
31.01.2012, 04:42
dr.kernel, по умолчанию такой директивы нет. Но задать её можно двумя способами (известными мне): (пусть UNSAFE нужная директива, объявлена когда используется unsafe)
  1. Объявлять директиву глобально, вручную - Project Properties >> Build >> Поле Conditional compilation symbols. Т.е. когда выбираем Allow unsafe code, то сразу прописываем директиву UNSAFE, когда убираем Allow unsafe code, то очищаем поле с директивами соответственно...
  2. Автоматизировать процесс объявления путем редактирования файла *.csproj (навеяно этим). Когда выбирается опция Allow unsafe code, то в файл проекта, в текущую конфигурацию, добавляется свойство AllowUnsafeBlocks (со значением true или false):
    XML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    ...
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <!--  -->
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <DefineConstants>TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <!--  -->
        <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
      </PropertyGroup>
    ...
    Проверяя значение данного свойства можно объявить дополнительную директиву:
    XML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    ...
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <!--  -->
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <DefineConstants>TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <!--  -->
        <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
      </PropertyGroup>
      <!-- Проверяем свойство AllowUnsafeBlocks -->
      <PropertyGroup Condition="'$(AllowUnsafeBlocks)' == 'true'">
        <!-- Если true - объявляем директиву UNSAFE -->
        <DefineConstants>UNSAFE</DefineConstants>
      </PropertyGroup>
    ...
    Теперь при работе в студии (или напрямую с MSBuild и файлом проекта *.csproj) можно использовать директиву UNSAFE, студия будет её воспринимать и подсвечивать нужный фрагмент кода в зависимости от того установлено свойство Allow unsafe code или нет.

    Пример:
Вложения
Тип файла: rar UnsafeDef.rar (3.4 Кб, 5 просмотров)
1
5 / 5 / 2
Регистрация: 31.07.2010
Сообщений: 62
31.01.2012, 05:35  [ТС]
SSTREGG, Было бы не плохо если бы можно было напрямую писать
#if '$(AllowUnsafeBlocks)' == 'true'

 Комментарий модератора 
Цитировать весь пост включительно вовсе не обязательно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.01.2012, 05:35
Помогаю со студенческими работами здесь

что-нибудь типа cin,но в графическом режиме.(для BC++3.0)
Господа!!!Я готов себя 100 раз назваться ламаком,но буду очень благодарен,если кто-нибудь мне поскажет какой-нибудь модуль для ...

Есть ли какая-нибудь библиотека/команда, которая возвращает кол-во ЗАПОЛНЕННЫХ элементов в переменной типа int?
Проще говоря, у меня есть переменная x (целочисленная), мне нужно определить количество цифр в ней. Можно через функцию по типу этой: int...

Что-нибудь есть по шифрованию текста?
В общем тут уже написал, сдал, попросили помочь ещё... Но ограничен идеями... Может кто-то поможет придумать какой-нить не сложный алгоритм...

Как проверить, есть ли что-нибудь в DataSet
у меня есть процедура, которая делает выборку из таблицы по входящим параметрам и возвращает данные в ref cursore, но бывает, что входящим...

Eval в Басике 6.0 есть ли что нибудь подобное??
У экселя есть метод Evaluate, которому можно скормить любое вычисляемое выражение. Evaluate('4+2') вернет 6 Так вот есть ли что нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru