2017-11-22 12 views
0

を定義した後こんにちは、私はこれについて私を悩ま終了し、私のプリプロセッサを得るのに苦労されています:が警告4996になってください、でも_CRT_SECURE_NO_WARNINGS

だから私はC/C++ -> preprocessor -> definitions

_CRT_SECURE_NO_WARNINGSを追加しましたしかし、それでも同じことが言いましたので、私は下のコードに示すように定義しました。 仕事はありませんでした。エラーではなく警告として出力されます。私は何かすべきことはありますか?

#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 

答えて

-1

ではなく

#pragma warning(disable: 4996) 

を使用することを検討してください。

+0

が、私はまだapperently私に同じエラーを与えただけでなく – Giraffpaj

0

あなたはプログラムの先頭に#define _CRT_SECURE_NO_WARNINGSを配置する必要があります:#define _CRT_SECURE_NO_WARNINGS#include <iostream>後に来るので

#define _CRT_SECURE_NO_WARNINGS 

#include <iostream> 

int main() 
{ 
    FILE *f = fopen("a", "r"); 
} 

しかし、警告してコンパイルを次

#include <iostream> 

#define _CRT_SECURE_NO_WARNINGS 

int main() 
{ 
    FILE *f = fopen("a", "r"); 
} 

同じ#pragma warning(disable: 4996)のために、あなたが必要プログラムの冒頭に置く(または少なくとも#include <iostream>の前に)

+0

、私が上にメインに戻ってそれを置くことを試みたが、今私は両方のC/C++でそれを持っています? – Giraffpaj

+0

@Giraffpajあなたは両方の場所でそれを持つ必要はありませんが、両方の場所でそれを持っている場合、それはあまりにもうまくいくでしょう。私は1つの場所でそれを持つことをお勧めします。 –

+0

お返事ありがとうございました:) – Giraffpaj

-1

_CRT_SECURE_NO_WARNINGSまたはその他の警告抑止を定義しないでください。これは、CRTのセキュリティ拡張機能をまだ利用していないコードをアップグレードするときに使用される回避策です。それらを引き起こしているコードを修正してください。 >定義とコードで、問題点である - >プリプロセッサ -

+2

「セキュリティ強化」はMicrosoft独自の機能であり、「偶然に」コードを移植性のないものにします。 – MSalters

+0

古い関数は実際には非推奨ではなく、新しい関数は常に「拡張」として見なされるわけではありません。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm –

+0

@MSalters CRTでのセキュリティ強化の利用は、移植性に影響しません。 – VTT

関連する問題