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

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

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

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

Сообщение Max Rusov » 26.06.2009 12:07:51

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

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


По идее, оба присвоения должны генерировать ошибку...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

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

Сообщение Mr.Smart » 26.06.2009 16:28:55

Нет не это не баг!
Язык Pascal строго типизирован и FreePascal неисключение!
В первом примере вы задаёте адрес указателю равный 1.
Во втором примере попытка присвоть переменную типа непроизводного от Pointer. Для корректного присваивания необходито преобразовать (кастануть) тип.
Код: Выделить всё
...
P:=Pointer(A);
...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение Max Rusov » 26.06.2009 16:48:27

Я не против строгой типизации. Я как раз считаю что оба выражения должны приводить к ошибке. По крайней мере в Delphi так...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 5

Рейтинг@Mail.ru