-1

假设我们有一些函数并且我们想要验证参数。例如不为 NULL:

void* myFunction(char* str1, char* str2){
    if(str1==NULL || str2==NULL) return NULL;
    ...
}

我的问题是什么叫做良好的低级(API)验证,就像它是由标准 C 库制作的一样。

谢谢。

4

2 回答 2

1

C 是你所问的,你得到的语言有很多绳子可以吊死自己,而且安全网很少。以 Apple的 strcpy 实现为例,但它们看起来都非常相似:

char *strcpy(char *s1, const char *s2)
{
    char *s = s1;
    while ((*s++ = *s2++) != 0)
    ;
    return (s1);
}

由于 C 不知道异常的概念,所有的错误信号都必须通过函数的返回值,有时通过全局变量 errno 来完成,这当然在一定程度上限制了错误的表达能力。

因此,如果您想与标准库的功能保持一致,则几乎不需要提供安全性。

于 2012-12-06T01:38:00.387 回答
0

关键是“言出必行”和“言出必行”。“你说什么”需要清楚地描述。描述应该在文档中,但也可以在注释或函数名或参数名中。

说明要求后,请确保您满足该要求。如果您定义要捕获的错误情况,请确保调用者可以使用errno或其他方式确定这一点。

于 2012-12-06T01:42:22.700 回答