macro StringValuePtr

[edit]
char * StringValuePtr(VALUE val)

val が String でなければ to_str メソッドを使って String に変換し、その実体のポインタを返します。

このマクロに渡した VALUE は ruby の GC から確実に保護されます。