函数不使用X参数,具有默认参数的函数[重复]

问题描述 投票:0回答:1

我有一个函数声明

int checkWinsockError(int errorCode, const char *errorType, bool getError, int WSAAPI cleanupFunc(), struct addrinfo *addrToFree, SOCKET *socketToClose, bool sockError);

和函数定义。

int checkWinsockError(int errorCode, const char *errorType, bool getError=false, int WSAAPI cleanupFunc()=nullptr, struct addrinfo *addrToFree=nullptr, SOCKET *socketToClose=nullptr, bool sockError=false) {
      // error handling code
}

当我调用此函数时,

checkWinsockError(10000, "error");

我收到错误信息'checkWinsockError':函数没有2个参数'。此函数的调用

checkWinsockError(10000, "error", false);

覆盖第一个默认参数会产生错误“ checkWinsockError”:函数没有3个参数”。这一直持续到我用这样的函数调用覆盖最后的默认参数sockError为止。

checkWinsockError(10000, "error", false, nullptr, nullptr, nullptr, false);

我仅在将sockError添加到参数列表后才开始遇到此错误。当存在默认参数时,为什么编译器会迫使我为此参数传递值?我正在使用Visual Studio 2017和Winsock库。

c++ winsock default-arguments
1个回答
0
投票

在函数调用时,编译器只会看到没有默认参数的函数的声明。

© www.soinside.com 2019 - 2024. All rights reserved.