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.