в моем коде). Используйте его номер (1400) вместо 1600; Я отредактирую свое решение, чтобы отразить это. Кроме того, у меня нет ни одного из его четырех отображений функций в моем коде выше. Добавьте их, если хотите. Я не буду, пока у меня не будет возможности проверить их. Только два из них могут быть переписаны для традиционного отображения функций защиты.
орое время назад я пытался использовать Visual Studio 2010 для компиляции программы MFC, в которой использовалась библиотека, написанная в Visual Studio 2003. Неудивительно, что я получил кучу предупреждений об устаревании и использовании безопасных версий различных строковых функций.
Затем я обновил соответствующие функции в библиотеке, чтобы использовать безопасные функции, и она скомпилировалась нормально.
Позже я попытался снова скомпилировать его в другой системе с помощью Visual Studio 2003, и меня раздражали несуществующие функции безопасности.
Я решил создать гибридный подход, который позволил бы мне компилировать программы, использующие библиотеку в любой среде, используя безопасные функции, если они доступны, и, если нет, совмещать их со старыми.
Сначала я решил проверить каждую функцию, чтобы увидеть, существует ли защищенная версия, но она не будет работать и требует отдельной работы для каждой функции:
#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
…
Поэтому я пытаюсь выяснить, существует ли способ определить, существуют ли защищенные функции. Я знаю, что они были введены в Visual Studio 2005, но есть ли#define
или что то можно использовать следующим образом?
#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
Я проверилcrtdefs.h
но ничего полезного не нашел.