gpt4 book ai didi

c - Ruby C 扩展,如何从段错误中恢复

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:23 24 4
gpt4 key购买 nike

我编写了一个简单的 Ruby C 扩展。一个方法期望第二个参数是一个字符串值。

VALUE method_foo(VALUE self, VALUE key) {

puts(RSTRING(key)->ptr);

return key;
}

传递整数而不是字符串很容易导致段错误。我应该如何检测到这一点并在 C 方法中进行预防或恢复?

最佳答案

你应该考虑调用 Check_Type (key, T_STRING)(如果你想引发异常)或使用 TYPE (key) 手动检查它(如果你想做一些其他而不是抛出异常)。

或者,您可以简单地说明 method_foo 需要一个字符串并将其留给调用者处理。毕竟,您的 API 是调用者和被调用者之间的契约,如果调用者违反规则,它就是对崩溃的完全有效响应。

我可能不会那样做,因为我更喜欢功能强大的软件,但有一种观点认为,人们不一定总能避免自己的愚蠢行为。它只会鼓励他们保持愚蠢 :-)

关于c - Ruby C 扩展,如何从段错误中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11945020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com