【发布时间】:2014-03-30 02:04:12
【问题描述】:
为 Ruby gem 编写 C 扩展,我需要测试参数值是否与已知符号和字符串相等。
我知道你可以用
实习一个字符串char *foo = "foo";
VALUE foo_string_value = rb_intern(foo);
然后将其转换为符号:
VALUE foo_sym_value = ID2SYM(foo_string_value);
我的问题是我现在是否可以使用 C 指针相等来可靠地测试参数,它可能是符号或字符串 :foo 或 'foo':
if (param == foo_string_value || param == foo_sym_value) {
...
}
换句话说,interning 是否保证指针相等也是符号和字符串的值相等?
如果这是错误的方法,那么进行这种比较的正确方法是什么?
【问题讨论】:
标签: c ruby ruby-c-extension