exponenta event banner

Удалить или заменить ключевые слова перед компиляцией

Компилятор Polyspace ® строго следует стандарту ANSI ® C99 (ISO/IEC 9899:1999). Если компилятор допускает отклонение от стандартного, компиляция Polyspace с параметрами по умолчанию не может эмулировать компилятор. Например, компилятор может разрешить использование определенного ключевого слова, отличного от ANSI, которое не распознается Полиспейсом по умолчанию.

Для точной эмуляции компилятора необходимо указать параметры Target & Compiler. Если ошибки компиляции по-прежнему получены из нераспознанных ключевых слов, их можно удалить или заменить только в целях проверки. Выбор Preprocessor definitions (-D) позволяет выполнять простые замены. Для сложных замен, например для удаления группы разделенных пробелами ключевых слов, таких как атрибут функции, используйте опцию Command/script to apply to preprocessed files (-post-preprocessing-command).

Удалить нераспознанные ключевые слова

В целях анализа из кода можно удалить неподдерживаемые ключевые слова. Например, выполните следующие действия, чтобы удалить far и 0x ключевое слово из кода (0x предшествует абсолютному адресу).

  1. Сохранить следующий шаблон как C:\Polyspace\myTpl.pl.

     Содержание myTpl.pl

    Для получения справки см. сводку регулярных выражений Perl.

     Регулярные выражения Perl

  2. На панели Конфигурация (Configuration) выберите Параметры среды (Environment Settings).

  3. Справа от команды/сценария для применения к предварительно обработанным файлам нажмите.

  4. Используйте диалоговое окно «Открыть файл» для перехода к C:\Polyspace.

  5. В поле Имя файла введите myTpl.pl.

  6. Щелкните Открыть (Open). Вы видите C:\Polyspace\myTpl.pl в поле Command/script для применения к предварительно обработанным файлам.

Удалить нераспознанные атрибуты функции

Неподдерживаемые атрибуты функции можно удалить из кода в целях анализа.

При выполнении проверки этого кода, определяющего универсальный компилятор, можно увидеть ошибки компиляции из noreturn атрибут. Компиляция кода выполняется с помощью компилятора GNU ®.

void fatal () __attribute__ ((noreturn));
          
void fatal (/* ... */)
{
    /* ... */ /* Print error message. */ /* ... */
    exit (1);
}

Если программа не распознает атрибут и он не влияет на анализ кода, его можно удалить из кода для проверки. Например, этот сценарий Perl можно использовать для удаления noreturn атрибут.

while ($line = <STDIN>) 
{

# __attribute__ ((noreturn))

  # Remove far keyword
  $line =~ s/__attribute__\ \(\(noreturn\)\)//g;
  
  # Print the current processed line to STDOUT
  print $line;
}

Укажите сценарий с помощью параметра Command/script to apply to preprocessed files (-post-preprocessing-command).

См. также

Параметры анализа в пространстве

Связанные темы