'DWORD':名称列表中的原型参数非法

时间:2019-06-01 21:35:39

标签: c

这是关于正向函数声明的?和struct,我需要解释为什么这些代码可在msvc 2013及以下版本而不在msvc 2015及以上版本上运行

我尝试定义函数参数,例如:

typedef void (*TRANSFERPROC)(LPPACKAGETRANSFER x, DWORD y, DWORD z);

代码为:

typedef void (*TRANSFERPROC)(LPPACKAGETRANSFER, DWORD, DWORD); //Error C2122 in here

typedef struct _PACKAGETRANSFER
{
    LPIOSOCKET          lpSocket;
    LPTIMER             lpTimer;
    LPIOBUFFER          lpIoBuffer;
    DWORD               dwBuffer;
    DWORD               dwLastError;
    ULONG               ulOpenSslError;
    LPTRANSFERRATE      lpTransferRate;
    INT64               i64Total;
    DWORD volatile      dwTime;
    BOOL                bNoFree;
    BOOL                bClosed; // Set to TRUE when a socket indicates it's been closed
    BOOL                bQuick;  // Set to TRUE if SendQuick which implies different overlapped structure
    BOOL                bTimedOut;
    VOID                (*lpCallBack)(LPVOID, DWORD, INT64, ULONG);
    LPVOID              lpContext;
    TRANSFERPROC        lpContinueProc; // When send/receive to socket completes call this function...

} PACKAGETRANSFER, *LPPACKAGETRANSFER;

//  Transmit package API
BOOL TransmitPackage_Init(BOOL bFirstInitialization);
VOID TransmitPackage_DeInit(VOID);
VOID TransmitPackages(LPIOSOCKET lpSocket, LPIOBUFFER lpBuffer, DWORD dwBuffer, VOID (* lpTransferRateCallBack)(LPVOID, DWORD, DWORD, DWORD),
                      VOID (* lpCallBack)(LPVOID, DWORD, INT64, ULONG), LPVOID lpContext);
VOID TransmitPackage_ReadSocket(LPPACKAGETRANSFER lpTransfer, DWORD dwBytesRead, DWORD dwLastError);
VOID TransmitPackage_WriteSocket(LPPACKAGETRANSFER lpTransfer, DWORD dwBytesRead, DWORD dwLastError);
VOID TransmitPackage_ReadSecureSocket(LPPACKAGETRANSFER lpTransfer, DWORD dwBytesRead, DWORD dwLastError);
VOID TransmitPackage_WriteSecureSocket(LPPACKAGETRANSFER lpTransfer, DWORD dwBytesRead, DWORD dwLastError);

msvc 2015-2019上的编译以错误结束:

..\IoSocket.h(101,62): error C2122:  'DWORD': prototype parameter in name list illegal

英特尔C / C ++编译器2019 U4设法干净地编译了上述代码。

0 个答案:

没有答案