4
爲Ruby gem編寫C擴展,我需要測試參數值是否與已知符號和字符串相等。Ruby C API字符串和符號相等?
我知道你可以實習生
char *foo = "foo";
VALUE foo_string_value = rb_intern(foo);
,然後將其轉換爲符號的字符串:
VALUE foo_sym_value = ID2SYM(foo_string_value);
我的問題是我現在可以可靠地測試的參數,這可能是一個符號或字符串,:foo
或'foo'
,與這些用C指針相等:
if (param == foo_string_value || param == foo_sym_value) {
...
}
換言之,實際上保證指針相等也是符號和字符串的值相等嗎?
如果這是錯誤的方法,那麼做這個比較的正確方法是什麼?