recisa de um #define para versões do Visual Studio que incluem funções de seqüência de caracteres segura (para evitar _CRT_SECURE_NO_DEPRECATE)

Um tempo atrás, tentei usar o Visual Studio 2010 para compilar um programa MFC que usava uma biblioteca que eu havia escrito no Visual Studio 2003. Não surpreendentemente, recebi vários avisos sobre descontinuação e uso das versões seguras de várias funções de strin

Atualizei as funções relevantes na biblioteca para usar as funções seguras e compilou be

ais tarde, tentei compilá-lo novamente em outro sistema com o Visual Studio 2003 e fiquei irritado com as funções de segurança que não existia


ecidi criar uma abordagem híbrida que me permitisse compilar programas que usam a biblioteca em qualquer ambiente, utilizando as funções seguras, se disponíveis, e, se não, aliasando-as às antiga

No começo, considerei verificar cada função para ver se existe uma versão segura, mas isso não funciona e requer trabalho separado para cada função:

#ifndef strcpy_s
    #define strcpy_s(a,b,c) strcpy(a,c)
#endif

#ifndef strcat_s
    #define strcat_s(a,b,c) strcat(a,c)
#endif

…

Então, o que estou tentando descobrir é uma maneira de determinar se as funções seguras existem. Eu sei que eles foram introduzidos no Visual Studio 2005, mas existe um#define ou algo que possa ser usado da seguinte maneira?

#ifndef SECURE_FUNCTIONS  // or #ifdef VS_VER_2005, #if (VS_VER >= 0x2005) etc.
    #define strcpy_s(a,b,c) strcpy(a,c)
    #define strcat_s(a,b,c) strcat(a,c)
    …
#endif

Eu chequeicrtdefs.h mas não encontrou nada útil.

questionAnswers(2)

yourAnswerToTheQuestion