Управляйте бросками типа данных в сгенерированном коде

Если у вас есть лицензия Embedded Coder®, можно управлять бросками типа данных в коде C/C++, сгенерированном из кода MATLAB®. Можно задать один из следующих режимов кастинга.

Кастинг режимаОписание
Номинал

Номинальный режим кастинга является режимом кастинга значения по умолчанию. Сгенерированный код C/C++ использует кастинг типа данных компилятора C по умолчанию. Когда вы не имеете требований информации о специальном типе данных, выбираете эту опцию. Вот пример кода, сгенерированного с помощью номинального режима кастинга:

short addone(short x)
{
  int i0;
  i0 = x + 1;
  if (i0 > 32767) {
    i0 = 32767;
  }

  return (short)i0;
}
Совместимые стандарты

Сгенерированный код C/C++ имеет броски типа данных, которые соответствуют стандартам MISRA®. Кастинг типа данных MISRA устраняет общие стандартные нарушения MISRA, включая адресную арифметику и присвоение. Это уменьшает 10.1, 10.2, 10.3, и 10,4 нарушений. Вот пример кода, сгенерированного с помощью совместимого стандартами режима кастинга:

short addone(short x)
{
  int i0;
  i0 = (int)x + (int)1;
  if (i0 > (int)32767) {
    i0 = (int)32767;
  }

  return (short)i0;
}
Явный

Сгенерированный код C/C++ имеет явные броски типа данных. Явные броски типа данных предоставляют информацию об объеме памяти что переменное использование и уровень точности для вычислений с помощью переменной. Вот пример кода, сгенерированного с помощью явного режима кастинга:

short addone(short x)
{
  int i0;
  i0 = (int)x + 1;
  if (i0 > 32767) {
    i0 = 32767;
  }

  return (short)i0;
}

Задайте режим кастинга Используя приложение MATLAB Coder

  1. На странице Generate Code, чтобы открыть диалоговое окно Generate, кликают по стрелке Generate.

  2. Установите Build type на одно из следующего:

    • Source Code

    • Static Library (.lib)

    • Dynamic Library (.dll)

    • Executable (.exe)

  3. Нажмите More Settings.

  4. На вкладке All Settings, под Advanced, устанавливает Casting mode на одно из следующих значений:

    • Nominal

    • Standards Compliant

    • Explicit

Задайте режим кастинга Используя интерфейс командной строки

  1. Создайте объект настройки кода для 'lib', 'dll' или 'exe'. Например:

    cfg = coder.config('lib','ecoder',true); % or dll or exe
    

  2. Установите свойство CastingMode на одно из следующих значений:

    • 'Nominal'

    • 'Standards'

    • 'Explicit'

    Например:

    cfg.CastingMode = 'Standards';
    

Смотрите также

Похожие темы