C中memset的用途是什么
我正在阅读源代码,无法理解以下语句的目的:C中memset的用途是什么,c,memset,C,Memset,我正在阅读源代码,无法理解以下语句的目的: /*********************************************************************** ** */ int main(int argc, char **argv) /* ***********************************************************************/ { char *cmd; // Parse command l
/***********************************************************************
**
*/ 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()
用于用零值填充该结构以启动它。看起来rargs
是一种包含程序选项的结构CLEARS()
和memset()
用于用零值填充该结构以启动它。memset将内存块设置为给定值。
它通常是用手工优化的汇编语言编写的,预计速度会非常快。memset将内存块设置为给定值。
它通常是用手工优化程序集编写的,预计速度会非常快。请阅读更多有关它的内容。顺便说一句:不需要强制转换,sizeof可能不符合您在此处的意图。您应该注意,在声明和
之间的某个地方清除了“调用”,必须分配args
结构。你们两个到底在说什么?清除*rargs处的重RGS为零。。。sizeof是正确的,args是不相关的。请阅读更多关于它的内容。顺便说一句:不需要强制转换,sizeof可能不符合您在这里的意图。您应该注意,在声明和清除调用之间的某个地方,必须分配args
结构。你们到底在说什么?清除*rargs处的重RGS为零。。。sizeof是正确的,args是无关的。