在使用 Visual Studio 进行 C/C++ 开发时,调用一些不安全的函数(如 strcpy、strcat 等)会提示 _CRT_SECURE_NO_WARNINGS 警告。这些函数不安全,可能导致内存泄漏等问题,因此建议使用带 _s 后缀的函数(如 strcpy_s、strcat_s 等)来代替它们。
但有时候
#define _CRT_SECURE_NO_WARNINGS 1 明明添加了却还是不可以使用
再次出现了如下的问题
发生错误时代码的样子
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS 1
int main() {
char str1[] = "Hello";
char str2[] = "World";
char combined[20]; // 定义一个足够大的数组来存放合并后的字符串
strcpy(combined, str1); // 将第一个字符串复制到合并后的数组中
strcat(combined, " "); // 在合并后的数组中加上一个空格
strcat(combined, str2); // 再将第二个字符串连接到合并后的数组中
printf("%s\n", combined); // 输出合并后的字符串
return 0;
}
解决办法 把#define _CRT_SECURE_NO_WARNINGS 1移到开头