gpt4 book ai didi

c - 使用宏检查空值

转载 作者:行者123 更新时间:2023-12-04 09:12:34 24 4
gpt4 key购买 nike

我的 C 代码包含许多函数,这些函数带有指向不同结构的指针作为参数,这些参数不应该是 NULL 指针。为了使我的代码更具可读性,我决定替换这段代码:

if(arg1==NULL || arg2==NULL || arg3==NULL...) {
return SOME_ERROR;
}

使用那个宏:

NULL_CHECK(arg1,arg2,...)

如果 args 的数量未知并且它们可以指向不同的结构,我应该怎么写呢? (我在 C99 工作)

最佳答案

IMO 最可维护的解决方案是编写多个单独的调用,而不是试图“聪明”地处理它。

例如,Win32 程序员使用在调试时运行断言的 VERIFY 宏(该宏确保断言从发布代码中剥离);以这样开头的函数并不罕见:

int foo(void* arg1, char* str, int n)
{
VERIFY( arg1 != NULL );
VERIFY( str != NULL );
VERIFY( n > 0 );

显然,您可以很容易地将这 3 行压缩成一行,但是当您不这样做时,宏的效果最好。如果你把它们放在不同的行上,那么一个失败的断言会告诉你三个条件中的哪一个没有被满足,而把它们全部放在同一个语句中只会告诉你有什么地方失败了,让你去弄清楚其余的。

关于c - 使用宏检查空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066876/

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