Project

General

Profile

Actions

Feature #3068

closed

[TypedData] RUBY_TYPED_DEFAULT_FREE は必要?

Added by tad (Tadashi Saito) about 14 years ago. Updated about 13 years ago.

Status:
Rejected
Assignee:
-
Target version:
-

Description

=begin
斎藤と申します。

1.9.2からRUBY_TYPED_DEFAULT_FREEというのが導入されるようですが、
これは本当に必要なものでしょうか。

#define RUBY_TYPED_DEFAULT_FREE ((void (*)(void *))-1)

のように、-1を(dfreeと同じ型の)関数ポインタにキャストするだけの
簡単なものですが、直に「-1」と書くのにくらべて、10倍以上長くなって
しまいます。

さらによーく見ると、「((void (*)(void *))-1)」と直書きする

よりも長くなってますね

-1を指定するのは、README.EXTにも載っている伝統ある方法なので、
わざわざ今になって別名をつける事もなんじゃないでしょうか。
それとも、どこからか意見や議論があったのでしょうか。
(見逃してたならごめんなさい)

また、もし「『-1』というマジックナンバーを指定するのが汚い」、
「『-1』と直書きした場合、『(void (*)(void ))とintの型が違う』と
コンパイラに怒られる」(ということはあったかなぁ?)などの理由で
-1と書きたくないならば、それらの多くはRTypedDataのみでなくRDataにも
当てはまることではないかと推測します。それならばTypedでない方の
RData用にも、RUBY_DEFAULT_FREE 等を定義するのが筋ではないで
しょうか。その場合は同様に、RUBY_NEVER_FREE == (void (
)(void *))0
や RUBY_TYPED_NEVER_FREE を定義する必要も出るでしょう。

ということで、中途半端だと混乱するので、

・一通り別名を用意して、これからはそちらを使うように推奨する
・長い別名は定義せず、簡潔な数値の直書きを第一手段とし続ける

のどちらかにちゃんとそろえて欲しいです。

よろしくおねがいします。
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0