2016-02-01 5 views
0

я получаю эти ошибки вокруг этих устанавливает:отсутствует спецификатор типа - Int предполагается, и связанные с ними вопросы

Код:

#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

Вам не удалось использовать этот макрос в области файлов? – molbdnilo

+0

@molbdnilo Извините, что вы имеете в виду? Этот макрос также используется в других файлах cpp. Он компилировал штраф раньше (как я помню) .. не знаю, что я изменил :(что я получаю эти ошибки .. –

+0

Как вы его используете? Ошибки выглядят точно так же, как вы бы получили, если бы вы написали этот код за пределами любой функции. (Например, строка 'sprintf' объявила бы переменную с отсутствующим типом и три инициализатора.) – molbdnilo

ответ

0

Похоже, что ваши ошибки происходят в заголовке, и мой первый инстинкт заключается в том, что вы используете макрос внутри определения класса вместо определения функции. Я не могу сказать точно, если вы также не предоставили заголовочный файл, в котором он используется. Определения классов не являются исполняемыми разделами кода, поэтому он предполагает, когда он расширяет макрос, который вы пытаетесь определить член, называемый sprintf, и инициализацию член с параметрами функции.

Смежные вопросы