gpt4 book ai didi

c - C中memset的目的是什么

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:36 25 4
gpt4 key购买 nike

我正在阅读 REBOL源代码,我无法理解以下语句的目的:

/***********************************************************************
**
*/ int main(int argc, char **argv)
/*
***********************************************************************/
{
char *cmd;

// Parse command line arguments. Done early. May affect REBOL boot.
Parse_Args(argc, argv, &Main_Args);

Print_Str("REBOL 3.0\n");

REBOL_Init(&Main_Args);

// Evaluate user input:
while (TRUE) {
cmd = Prompt_User();
REBOL_Do_String(cmd);
if (!IS_UNSET(DS_TOP)) {
//if (DSP > 0) {
if (!IS_ERROR(DS_TOP)) {
Prin("== ");
Print_Value(DS_TOP, 0, TRUE);
} else
Print_Value(DS_TOP, 0, FALSE);
//}
}
//DS_DROP; // result
}

return 0;
}

在 Parse_Args 函数中:

/***********************************************************************
**
*/ void Parse_Args(int argc, REBCHR **argv, REBARGS *rargs)
/*
** Parse REBOL's command line arguments, setting options
** and values in the provided args structure.
**
***********************************************************************/
{
REBCHR *arg;
REBCHR *args = 0; // holds trailing args
int flag;
int i;

CLEARS(rargs);

....

并且 CLEARS 被定义为:

#define CLEARS(m)       memset((void*)(m), 0, sizeof(*m));

所以我的问题是为什么要在这里使用 memset

最佳答案

看起来 rargs 是某种包含程序选项的结构。 CLEARS()memset() 用于用零值填充该结构以启动它。

关于c - C中memset的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999869/

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