嗨,我一直在努力让我的预处理器退出让我烦恼:
所以我在_CRT_SECURE_NO_WARNINGS
C/C++ -> preprocessor -> definitions
但它仍然说同样的,所以我在下面定义了它,如下面的代码所示。 虽然它没有用。它在输出中显示为错误,而不是警告。还有什么我应该做的吗?
#include "texture.h"
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
#include "stb_image.h"
#define STB_IMAGE_IMPLEMENTATION
Texture::Texture(const std::string& fileName)
{
int width, height, numComponents;
unsigned char* data = stbi_load((fileName).c_str(), &width, &height,
&numComponents, 4);
//rest isnt really neccesary i guess
答案 0 :(得分:0)
您需要将#define _CRT_SECURE_NO_WARNINGS
放在程序的最开头:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
int main()
{
FILE *f = fopen("a", "r");
}
但是,在#define _CRT_SECURE_NO_WARNINGS
之后出现#include <iostream>
时,会发出警告:
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
int main()
{
FILE *f = fopen("a", "r");
}
同样适用于#pragma warning(disable: 4996)
,你需要把它放在程序的开头(或者至少在#include <iostream>
之前)
答案 1 :(得分:-1)
考虑使用
#pragma warning(disable: 4996)
代替。
答案 2 :(得分:-1)
不要定义_CRT_SECURE_NO_WARNINGS
或其他警告抑制,这是在升级尚未使用CRT中的安全增强功能的代码时应该使用的解决方法。修复导致它们的代码。