Присвоение указателю целочисленной константы...

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Max Rusov
постоялец
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Присвоение указателю целочисленной константы...

Сообщение Max Rusov »

Это баг или так и задумано?

Код: Выделить всё

var
  A :Integer;
  P :Pointer;
begin
  P := 1; // Компилируется
  P := A; // Не компилируется


По идее, оба присвоения должны генерировать ошибку...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Нет не это не баг!
Язык Pascal строго типизирован и FreePascal неисключение!
В первом примере вы задаёте адрес указателю равный 1.
Во втором примере попытка присвоть переменную типа непроизводного от Pointer. Для корректного присваивания необходито преобразовать (кастануть) тип.

Код: Выделить всё

...
P:=Pointer(A);
...
Max Rusov
постоялец
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Сообщение Max Rusov »

Я не против строгой типизации. Я как раз считаю что оба выражения должны приводить к ошибке. По крайней мере в Delphi так...
Ответить