const导致“形式参数不同于声明”警告

时间:2016-01-28 17:30:37

标签: c const declaration

我在这个问题上看过多个问题(例如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的第二个参数也是......

1 个答案:

答案 0 :(得分:1)

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