我看到了一个以下列方式编写的函数:
retVal PreProcessor::TxSlotCB(void *a_pClass, PRE_PARAMS &/*commonParam*/)
{
some code
}
struct PRE_PARAMS
{
uint32_t param1;
uint32_t param2;
};
第二个参数发生了什么?它怎么可能是空的?有没有办法访问它?
答案 0 :(得分:4)
在C ++中,可以给出一个形式参数但是匿名。这意味着应该给出实际参数,但不在被调用函数中使用。
所以它应该在调用上下文中给出,它被传输,但是被调用的函数不能也不会使用它。并且编译器不会发出任何警告。
您无法在函数正文中访问它。如果需要访问它,请更改形式参数的声明以为其指定名称。
答案 1 :(得分:1)
这意味着当前此函数不使用PRE_PARAM类型的参数。
所以,当你设计一个函数时,你会决定这个函数为实现它的目的所需的参数。
但后来您发现此参数对此函数没有多大意义。但是,从函数声明中删除此参数是一项繁琐的工作,因为您必须检查对此函数的所有调用,并确保它们确认该更改。
因此,更好的方法是不在函数的定义中提供参数的名称,使该参数变得多余。