【问题标题】:const leading to "formal parameter different from declaration" warningconst 导致“与声明不同的形式参数”警告
【发布时间】:2016-01-28 17:30:37
【问题描述】:

我已经看到了关于这个主题的多个问题(例如this one),但没有一个可以解释我所看到的确切行为。

我有两个函数,每个函数都是这样声明和定义的:

void PntCreate(Handle *cv);
void PntCreate(Handle * const cv)
{
    //...
}

ErrorCodes wim2Read(const char *fileName, cdCanvas *cv,
                    int onViewport);
ErrorCodes wim2Read(const char * const fileName, cdCanvas * const cv,
                   const int onViewport)
{
    //...
}

声明和定义仅更改const 限定符。从上面链接的问题中,我了解到这可能会导致警告,因为它们不完全匹配。然而,我觉得奇怪的是警告只出现在PntCreate,而不是wim2Read

这里发生了什么?我想这可能是因为PntCreate 的参数是一个结构,但wim2Read 的第二个参数也是...

【问题讨论】:

  • Canvas 和 cdCanvas 一样吗?
  • 天哪,那是一个错字!问题已更正。

标签: c constants declaration


【解决方案1】:

您的问题是 wim2Read 定义中的 cv 是指向 Canvas 的指针,而不是指向 cdCanvas 的指针时间>。 PntCreatewim2Read 中的const 对调用者和实现之间的约定没有影响,因为参数是按值传递的。

【讨论】:

  • 抱歉,这是问题中的错字。已更新。
  • 另外,请注意警告是在PntCreate,而不是wim2Read,它有错字。
  • @Wasabi 您使用哪种编译器?尝试创建一个最小的可编译示例来说明您的问题。这也降低了输入错误的风险。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多