我在这些定义中遇到了这些错误:
代码:
#if defined(POSTER_VER)
#define DECLARE_COM_PORT_EXT(pErrInfo) \
char aname[128]; \
sprintf(aname, "\\\\.\\COM%d", g_COMPortNumber); \ //First error is here(see below)
if(!port.OpenPort(aname, CBR_115200, 8, NOPARITY, ONESTOPBIT, HSM_READ_TIMEOUT)) { dppModuleError(dppERR_IO_ERROR, "Ошибка работы с аппаратным ключем").FillErrorStruct(pErrInfo); return dppERR_FAIL ; }
错误:
1>d:\dppclientmodule\dppclientmodule\cryptography.h(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\dppclientmodule\dppclientmodule\cryptography.h(30): error C2365: 'sprintf' : redefinition; previous definition was 'function'
1> c:\program files\microsoft visual studio 11.0\vc\include\stdio.h(357) : see declaration of 'sprintf'
1>d:\dppclientmodule\dppclientmodule\cryptography.h(30): error C2078: too many initializers
1>d:\dppclientmodule\dppclientmodule\cryptography.h(31): error C2059: syntax error : 'if'
1>d:\dppclientmodule\dppclientmodule\cryptography.h(31): error C2143: syntax error : missing ';' before '{'
1>d:\dppclientmodule\dppclientmodule\cryptography.h(31): error C2447: '{' : missing function header (old-style formal list?)
有人可以帮我弄清楚发生了什么吗?
我在此文件的顶部添加了包含<cstdio>
。
答案 0 :(得分:0)
看起来你的错误发生在标题中,我的第一直觉是你在类定义中使用宏而不是函数定义。我不能肯定地说,除非你还提供它正在使用的头文件。类定义不是可执行代码段,所以它假定它扩展宏时,你试图定义一个名为sprintf的成员并初始化具有该函数参数的成员。