缺少类型说明符 - int假设和相关问题

时间:2016-02-01 13:31:39

标签: c++

我在这些定义中遇到了这些错误:

代码:

#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>

1 个答案:

答案 0 :(得分:0)

看起来你的错误发生在标题中,我的第一直觉是你在类定义中使用宏而不是函数定义。我不能肯定地说,除非你还提供它正在使用的头文件。类定义不是可执行代码段,所以它假定它扩展宏时,你试图定义一个名为sprintf的成员并初始化具有该函数参数的成员。

相关问题