C++ 将不带名称的变量传递给函数
我看到一个函数是以以下方式编写的:C++ 将不带名称的变量传递给函数,c++,C++,我看到一个函数是以以下方式编写的: retVal PreProcessor::TxSlotCB(void *a_pClass, PRE_PARAMS &/*commonParam*/) { some code } struct PRE_PARAMS { uint32_t param1; uint32_t param2; }; 第二个参数中发生了什么?它怎么可能是空的?有什么方法可以访问它吗
retVal PreProcessor::TxSlotCB(void *a_pClass, PRE_PARAMS &/*commonParam*/)
{
some code
}
struct PRE_PARAMS
{
uint32_t param1;
uint32_t param2;
};
第二个参数中发生了什么?它怎么可能是空的?有什么方法可以访问它吗在C++中,可以给出形式参数,但可以匿名。这意味着应该给出实际参数,但不在被调用函数中使用 因此,它应该在调用上下文中给出,它被传输,但被调用函数不能也不使用它。编译器不会给出任何警告
您不能在函数体中访问它。如果需要访问它,请更改formal参数的声明以赋予它一些名称。这意味着该函数当前未使用PRE_PARAM类型的参数 所以,当你设计一个函数时,你会决定这个函数的参数来实现它的目的 但是后来你发现这个参数对这个函数没有多大意义。但是,从函数声明中删除此参数是一项繁琐的工作,因为您必须检查对该函数的所有调用,并确保它们确认该更改
因此,更好的方法是不在函数定义中为参数提供名称,从而使该参数变得多余。函数体无法访问该参数(通过标准方法)。顾名思义,这可能用于将重载函数(或本例中的回调函数)的参数标记为未在该函数的特定重载版本中使用。当函数中存在未使用的参数只是为了与旧代码兼容时,我会给他默认值(当然,如果它是最后一个没有默认值的参数)。这样,更改后编写的代码就不必传递伪值。您可以做任何事情,只要该函数的读者清楚该函数当前正在使用哪些参数。。。