#error Macro definition of vsnprintf conflicts with Standard Library function declaration

jordiblasi wrote on Wednesday, March 09, 2016:

Hello,

I am new to freertos and I am trying to test the Network and FAT demo. I am trying to compile it with Microsoft Visual Studio 2015. When I try to compile It I get the following errors on the stdio.h file:

Warning C4005 ‘vsnprintf’: Macro redefinition
Error C1189 #error: Macro definition of vsnprintf conflicts with Standard Library function declaration RTOSDemo

On StackOverflow I have found a reference to a similar problem but solution does not work for me:
http://stackoverflow.com/questions/27754492/vs-2015-compiling-cocos2d-x-3-3-error-fatal-error-c1189-error-macro-definiti

What I am missing?

Thanks in advance.

edwards3 wrote on Wednesday, March 09, 2016:

Looks like a compiler version difference issue. Did you grep for #defines like the example in your link?

jordiblasi wrote on Wednesday, March 09, 2016:

I commented all the #defines related to vsnprintf but I got errors relating to _vsnprintf function.

Error C2084 la función ‘int _vsnprintf(char *const ,const size_t,const char *const ,va_list)’ ya tiene un cuerpo

heinbali01 wrote on Wednesday, March 09, 2016:

Yes I had the same when moving from VS2010 to VS2015. In earlier versions, snprintf() was considered unsafe and and alternative (_snprintf) had to be used.

This could be used as well:

    #if _MSC_VER < 1500
        #define snprintf _snprintf
        #define vsnprintf _vsnprintf
        #define strdup _strdup
    #endif

Adeu/adios.

oscarlpez wrote on Thursday, August 04, 2016:

Hi,

Has finally anybody solve successfully this issue?
I am not sure in which file need to be included the previous solution. In stdio.h file?
Thanks for sharing.

Oscar

rtel wrote on Thursday, August 04, 2016:

It is not clear to me why you think the problem has not been solved, or
why it is a problem at all - it just depends on which version of Visual
Studio you are using.

Did you try Hein’s solution?

oscarlpez wrote on Friday, August 05, 2016:

I was trying Hein’s solution, but I don´t know which file mofify, or in which file should be included the changes. I am using VS2015.

Thanks again
Oscar

rtel wrote on Friday, August 05, 2016:

Did you try grep’ing the directory structure for where the function
names snprintf and _snprintf already occur in a macro? From the thread
it sound like you just need to remove or update the macro mapping.