Management of size_t (-size-t-type-is)

Задайте базовый тип данных size_t

Описание

Задайте базовый тип данных size_t явным образом: unsigned char, unsigned short, unsigned int, unsigned long или unsigned long long. Если вы не задаете эту опцию, ваш выбор компилятора определяет базовый тип.

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Target & Compiler.

Командная строка и файл опций: Используйте опцию -size-t-type-is. Смотрите информацию о командной строке.

Почему использование эта опция

Анализ сопоставляет тип данных с size_t когда вы задаете свой компилятор с помощью опции Compiler (-compiler). В большинстве случаев вы не должны явным образом использовать эту опцию и задать базовый тип для size_t.

В некоторых ситуациях, при создании кода, вы можете использовать параметр компилятора, который изменил определение компилятора по умолчанию size_t. В этих случаях эмулируйте свой параметр компилятора при помощи этого Polyspace® опция анализа. В противном случае вы можете видеть сообщение об ошибке, связанное с size_t во время анализа Polyspace. Если вы видите такое сообщение об ошибке, чтобы зондировать далее и определить базовый тип size_t, скомпилируйте этот код со своим компилятором с помощью опций, которые вы обычно используете:

/* Header defines malloc as void* malloc (size_t size)
#include <stlib.h>

void* malloc (unsigned int size);
Если файл не компилирует, ваш компилятор (наряду с параметрами компилятора) задает size_t использование типа, отличающегося от unsigned int. Замените unsigned int с другим типом, таким как unsigned long и попробуйте еще раз, пока вы не определите базовый тип size_t.

Настройки

Значение по умолчанию: defined-by-compiler

defined-by-compiler

Ваша спецификация для Compiler (-compiler) определяет базовый тип size_t.

unsigned-int

Анализ рассматривает unsigned int как базовый тип size_t.

unsigned-long

Анализ рассматривает unsigned long как базовый тип size_t.

unsigned-long-long

Анализ рассматривает unsigned long long как базовый тип size_t.

unsigned-char

Анализ рассматривает unsigned char как базовый тип size_t.

unsigned-short

Анализ рассматривает unsigned short как базовый тип size_t.

Советы

Ошибки компиляции из неправильного определения size_t может появиться неожиданными способами. Например, вы можете видеть ошибку как это:

first parameter of allocation function must be of type "size_t"
на объявлении выделения функционируют, такие как:
void * operator new(size_t size);
Эта ошибка появляется, потому что Polyspace внутренне объявляет функцию выделения с size_t определение от вашей аналитической настройки Polyspace, но вашего объявления может использовать различный size_t определение от заголовка компилятора. Несоответствие в size_t определения приводят к несоответствию в объявлениях выделения, функционирует и обнаруживается как сообщение об ошибке о функциях выделения.

Информация о командной строке

Параметр: -size-t-type-is
Значение: defined-by-compiler | unsigned-char | unsigned-int | unsigned-short | unsigned-long | unsigned-long-long
Значение по умолчанию: defined-by-compiler
Пример (Bug Finder): polyspace-bug-finder -size-t-type-is unsigned-long
Пример (Code Prover): polyspace-code-prover -size-t-type-is unsigned-long
Пример (сервер Bug Finder): polyspace-bug-finder-server -size-t-type-is unsigned-long
Пример (сервер Code Prover): polyspace-code-prover-server -size-t-type-is unsigned-long