Как исправить ошибку «C4996 'strcat': This function or variable may be unsafe»?

При компиляции такого кода

#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

int main() {
	const int maxSymbols = 15;
	char* word1 = new char[maxSymbols];
	char* word2 = new char[maxSymbols];
	
	cout << "Enter five words : ";
	cin >> word1;
	cin >> word2;

	cout << endl << strcat(word1, word2);
}


Появляется ошибка C4996 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

После появления этой ошибки в начале дописал #define _CRT_SECURE_NO_WARNINGS
но это ничего не изменило.
Помогите пожалуйста.
  • Вопрос задан
  • 2727 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Sumor
Попробуйте ввести более 10 символов в word1 и word2 и у вас программа непредсказуемо упадёт.
Если использовать strcat_s, то она проверит граничные условия и выдаст ошибку, если они не выполняются.
Для использования strcat_s нужно немного переписать программу - обработать ошибку и знать размер первого буфера.
Ответ написан
Комментировать
@pfemidi
Тут могло бы быть краткое описание меня
Данил Васькевич, прикинь, блин! Или как компилятор советует вместо strcat использовать strcat_s, или указать дифайн _CRT_SECURE_NO_WARNINGS (в Visual Studio его можно указать в свойствах проекта, глобально). Ну лучше всё же не пользоваться небезопасными функциями, а перейти на функции с суфиксом _s везде где только возможно, а не только в этом случае. Дифайн _CRT_SECURE_NO_WARNINGS это плохое решение, подходит на "только сейчас и для старого кода чтобы поддерживался", а новый код не надо на него расчитывать, надо пользоваться безопасными функциями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы