ভিজ্যুয়াল স্টুডিওতে ডিফল্টরূপে প্রকল্পগুলি থেকে সুরক্ষিত সতর্কতাগুলি (_CRT_SECURE_NO_WARNINGS) সরান


195

সমস্ত প্রকল্পের জন্য পূর্বনির্ধারক সুরক্ষিত সতর্কতাগুলি সরিয়ে ফেলার কোনও উপায় আছে যা স্ক্যানফ () এর মতো ফাংশন ব্যবহার করার সময় আসে। আমি খুঁজে পেয়েছি যে আপনি প্রকল্প বিকল্পে বা #define _CRT_SECURE_NO_WARNINGSকোডের শুরুতে একটি লাইন যুক্ত করে এটি করতে পারেন ।

আমি নিজেকে বারবার প্রোগ্রামিং প্রতিযোগিতাগুলি সমাধান করার জন্য নতুন প্রকল্পগুলি তৈরি করতে দেখি এবং এটি যুক্ত করতে সত্যই বিরক্তিকর (এবং মূল্যবান সময় লাগে):

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

কোডের শুরুতে, বা প্রতিবার আমি যখন নতুন প্রকল্প শুরু করি তখন পূর্বনির্ধারক বিকল্পগুলিতে সেট করতে।


2
আপনি _CRT_SECURE_NO_WARNINGS সংজ্ঞায়িত করে একটি প্রকল্প টেম্পলেট রফতানি করতে পারেন।
ব্লুওয়ান্ডারার

এটি একটি ভাল workaround মত বলে মনে হচ্ছে। আমি এটি খতিয়ে দেখছি। ধন্যবাদ!
জুয়ান মার্টিনেজ

3
আপনি শেষটি 1 টি ভুলে গেছেন # নির্ধারিত _CRT_SECURE_NO_WARNINGS 1
ভ্যান

3
@ মার্তিজজ্ঞানভিজেল 1 এর শেষে প্রয়োজন নেই।
qqqqq

1
@qqqqq এটি সত্য হতে বাধ্য করবে
মার্টিজন ভ্যান

উত্তর:


286

সমাধান এক্সপ্লোরারে সমস্ত পছন্দসই প্রকল্পগুলি চিহ্নিত করুন।

সমাধান এক্সপ্লোরারটিতে Alt-F7 টিপুন বা ডান ক্লিক করুন এবং "সম্পত্তি" নির্বাচন করুন

কনফিগারেশন: সমস্ত কনফিগারেশন

এর সম্পাদককে অনুরোধ করতে প্রিপ্রসেসর সংজ্ঞা লাইনে ক্লিক করুন

সম্পাদনা চয়ন করুন ...

উপরের প্রিপ্রসেসর সংজ্ঞা সাদা বাক্সে "_CRT_SECURE_NO_WARNINGS" অনুলিপি করুন।

এখানে চিত্র বর্ণনা লিখুন


10
এটি এমন কোনও প্রকল্পের জন্য কীভাবে যুক্ত করবেন তা বর্ণনা করে যা আমি মনে করি ওপি ইতিমধ্যে জানে (যদিও এটি 100% পরিষ্কার নয়)। মূল প্রশ্নটি কীভাবে এটি যুক্ত করা যায় যাতে এটি সমস্ত প্রকল্পে প্রদর্শিত হয়। আদর্শভাবে, কেউ কীভাবে এটি% (প্রিপ্রসেসর ডেফিনিশনগুলি) ম্যাক্রোতে যুক্ত করতে পারে যাতে এটি সর্বত্র অন্তর্ভুক্ত হয়?
রব গিলিয়াম 11

13 ই জানুয়ারী, 2015 পর্যন্ত ঠিক করা হয়েছে

এটি কেবল প্রথম পদক্ষেপের বর্ণনা দেয়। আপনি যখন যা যা প্রয়োজন সবকিছু কনফিগার করে নিলে আপনি একটি প্রকল্পের টেম্পলেটও রফতানি করতে চাইবেন ( নির্দেশাবলীর জন্য প্রকল্প টেম্পলেটগুলি কীভাবে দেখুন )।
IInspectable

91

এটি হতে পারে কারণ আমি এখনও ভিএস-তে নতুন এবং স্পষ্টতই সি-তে নতুন, তবে কেবলমাত্র যে জিনিসটি আমাকে তৈরি করতে দিয়েছে তা যুক্ত করা হচ্ছিল

#pragma warning(disable:4996)

আমার ফাইলের শীর্ষে, এটি স্প্রিন্টফের সাথে আমি যে C4996 এর ত্রুটিটি পেয়েছিলাম তা চাপা দিয়েছে

কিছুটা বিরক্তিকর তবে আমার ক্ষুদ্র কোডের জন্য নিখুঁত এবং সবচেয়ে সহজতম।

আমি এটি সম্পর্কে এখানে পড়লাম: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx


5
আমি এই পৃষ্ঠায় প্রদর্শিত # নির্দিষ্ট সংখ্যার প্রতিটি প্রকরণ চেষ্টা করেছি (শেষের সাথে 1 ছাড়া এবং ছাড়াও) এবং কেবল # প্রগমা আমার পক্ষে কাজ করেছে। (ভিএস ২০১৩ সম্প্রদায় সংস্করণ) আমি নিশ্চিত যে আমি কিছু মিস করছি তবে কোনও এক সময় আপনার এটির প্রয়োজন হয় যাতে আপনি এটি চালিয়ে যেতে পারেন।
স্পাইকএক্সএফ

ঠিক একই জিনিস ছিল - এটি shitty বোধ করে কিন্তু দিনের শেষে, ভাল চ *** এটি, এটি @ স্পাইক0xff কাজ করে
Shaun314

2
আমি নিশ্চিত করতে পারি _ _CT_SECURE_NO_WARNINGS ভিসি ++ 2015 তে কাজ করে না তবে উপরের কাজগুলিতে। ধন্যবাদ!
শীতল শাহ

@ শীতলশাহ কি ব্যক্তিগত নিশ্চয়তা বা কিছু সরকারী মাইক্রোসফ্ট ডকুমেন্টেশনের উপর ভিত্তি করে আপনার নিশ্চিতকরণ?
Qqqqq

1
@ ব্রি: নিঃশর্তভাবে ডিফল্ট সেট করার ফলে অযাচিত প্রভাব থাকতে পারে। আপনি সত্যই আচরণটি আগের মতো করে ফেরাতে চেয়েছিলেন। এটি করতে, পরিবর্তে #pragma warning(push)/#pragma warning(pop) ব্যবহার করুন।
IInspectable

29

স্বয়ংক্রিয়ভাবে না, না। ব্লু ওয়ান্ডার্ডের প্রস্তাবিত হিসাবে আপনি একটি প্রকল্প টেমপ্লেট তৈরি করতে পারেন বা একটি কাস্টম সম্পত্তি শীট তৈরি করতে পারেন যা আপনি আপনার বর্তমান এবং ভবিষ্যতের সমস্ত প্রকল্পের জন্য ব্যবহার করতে পারেন।

  1. সম্পত্তি পরিচালক খুলুন (দেখুন-> সম্পত্তি পরিচালক)
  2. প্রপার্টি ম্যানেজারে আপনার প্রকল্পে ডান ক্লিক করুন এবং "নতুন প্রকল্পের সম্পত্তি পত্রক যুক্ত করুন" নির্বাচন করুন
  3. এটি একটি নাম দিন এবং একটি সাধারণ ডিরেক্টরিতে এটি তৈরি করুন। সমস্ত বিল্ড টার্গেটে সম্পত্তি শীট যুক্ত করা হবে।
  4. নতুন সম্পত্তি পত্রকে ডান ক্লিক করুন এবং "সম্পত্তি" নির্বাচন করুন। এটি বৈশিষ্ট্যগুলি খুলবে এবং আপনি যেমন কোনও প্রকল্পের জন্য এগুলি সম্পাদনা করছেন ঠিক তেমন সেটিংস পরিবর্তন করার অনুমতি দেবে।
  5. "সাধারণ বৈশিষ্ট্য-> সি / সি ++ -> প্রাক প্রসেসর" এ যান
  6. "প্রিপ্রসেসর সংজ্ঞা" সেটিংস সম্পাদনা করুন এবং যুক্ত করুন _CRT_SECURE_NO_WARNINGS
  7. সংরক্ষণ করুন এবং আপনি সম্পন্ন করেছেন।

এখন যে কোনও সময় আপনি নতুন প্রকল্প তৈরি করুন, এই সম্পত্তি পত্রকটি এর মতো যুক্ত করুন ...

  1. সম্পত্তি পরিচালক খুলুন (দেখুন-> সম্পত্তি পরিচালক)
  2. প্রপার্টি ম্যানেজারটিতে আপনার প্রকল্পে ডান ক্লিক করুন এবং "বিদ্যমান প্রকল্পের সম্পত্তি পত্রক যুক্ত করুন" নির্বাচন করুন

এখানে সুবিধাটি হ'ল কেবলমাত্র সাধারণ সেটিংস পরিচালনা করার জন্য আপনি একক স্থান পান না তবে যে কোনও সময় তারা সেটিংস পরিবর্তন করে যেগুলি এটি ব্যবহার করে এমন সমস্ত প্রকল্পে প্রচারিত হয়। আপনি যদি _CRT_SECURE_NO_WARNINGSআপনার প্রকল্পগুলিতে ব্যবহার করতে চান এমন অনেকগুলি সেটিংস বা বুস্টের মতো লাইব্রেরি থাকে তবে এটি সুবিধাজনক ।


সেটা খুবই ভালো. আমি বিশ্বাস করতে পারি না যে আমি আজ অবধি সম্পত্তি পরিচালককে আবিষ্কার করি নি।
জেমস জনস্টন

20

এখানকার সমস্ত সমাধান আমার ভিএস ২০১৩ এ কাজ করতে ব্যর্থ হয়েছে, তবে আমি #define _CRT_SECURE_NO_WARNINGSস্টাডএফএক্সএক্স.এল-এ রেখেছিলাম #pragma onceএবং সমস্ত সতর্কতা দমন করার আগেই । দ্রষ্টব্য: আমি কেবল আমার গবেষণাকে সমর্থন করার জন্য প্রোটোটাইপিংয়ের উদ্দেশ্যে কোড করি তাই দয়া করে আপনার কোডটি লেখার সময় নিশ্চিত হয়ে নিন যে আপনি এই পদ্ধতির প্রভাবগুলি বুঝতে পেরেছেন।

আশাকরি এটা সাহায্য করবে


1
কোথায় stdafx.hঅবস্থিত?
সামথিংসমিংথিং

1
যারা জানেন না তাদের জন্য এটি 1 এর মতো সংজ্ঞায়িত করা উচিত: # নির্ধারিত _সিআরএসএসইকিউরি_নি_ওয়ার্নিংস 1
কিরক.বার্লসন

11

ভিএস 2017 এর জন্য আমার দুটি সেন্ট:

আমি উভয় স্টাইলেই এটি stdafx.h এ কাজ করে তা নিশ্চিত করতে পারি:

ক)

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 

খ)

#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 
#pragma once

(আমি এমএসডিএন নেটওয়ার্ক কলগুলির জন্য অন্য একটি সংজ্ঞা যুক্ত করেছি ..) অবশ্যই আমি পছন্দ করি না)।

আমি এটি নিশ্চিত করতে পারি: # নির্ধারিত _CRT_SECURE_NO_WARNINGS (কোনও মূল্য ছাড়াই) কাজ করে না

পিএস আসল পয়েন্ট হ'ল এইগুলি সংজ্ঞায়িত করার আগে ফাংশনগুলির ঘোষণার আগে, যেমন * .h এর আগে


পাশাপাশি ভিজ্যুয়াল স্টুডিও 2010 এ কাজ করে।
ebyrob

8

কেবল " _CRT_SECURE_NO_WARNINGS " অনুলিপি করুন এটি প্রকল্প -> বৈশিষ্ট্য-> সি / সি ++ -> প্রাকপ্রসেসর-> প্রিপ্রোসেসর সংজ্ঞাতে ক্লিক করুন ঠিক আছে। এটি কাজ করবে


0

যদি আপনার প্রকল্পটি stdafx.h ব্যবহার না করে, আপনি আপনার .cpp ফাইলে প্রথম লাইন হিসাবে নিম্নলিখিত রেখাগুলি রাখতে পারেন এবং সংকলক সতর্কতাটি দূরে চলে যাওয়া উচিত - কমপক্ষে এটি আমার জন্য ভিজ্যুয়াল স্টুডিও সি +++ এ করেছিল।

#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1

তাদের সামনে মন্তব্য এবং ফাঁকা লাইন রাখা ঠিক আছে।


0

যদিও আপনি আপনার প্রকল্পের সম্পত্তিগুলিতে _CRT_SECURE_NO_WARNINGS যুক্ত করতে পারেন , কোনও ধরণের সতর্কতা এবং ত্রুটি নিষ্ক্রিয় করার জন্য stdafx.h ব্যবহার করা সবচেয়ে সহজ উপায়, কেবল নিশ্চিত করুন যে আপনি নীচের লাইনটি আগে রেখেছেন (এবং অনুরূপ) আগে

#pragma once

এছাড়াও _CRT_SECURE_NO_WARNINGS যতক্ষণ এটি সংজ্ঞায়িত হয় ততক্ষণ কোনও মান (যেমন "1") সংজ্ঞায়িত করার প্রয়োজন নেই। সুতরাং এটির মতো দেখতে হবে:

#define _CRT_SECURE_NO_WARNINGS 

#pragma once

এটি ভুল। অর্ডারটি কোনও পার্থক্য করে না। মোটেই আমি ধরে নিচ্ছি যে আপনি কখনই ব্যাখ্যা করেন নি, কেন এটি প্রয়োজনীয় ছিল, কারণ কোনও কারণ নেই।
IInspectable

এটি "অর্ডার" এর বিষয় নয়, কেবল ডাবল চেক করা হয়েছে: আপনি যদি # প্রাগামার পরে # ডিফাইন_সিআরএসএসইএসসিউর_নো_ওয়ার্নিংস একবার রাখেন তবে আপনি এই ত্রুটিটি পেয়ে যাবেন!
মাইকেল হেফরাতি

এর আচরণটি #pragma onceবাস্তবায়ন-সংজ্ঞায়িত, তবে ভিজ্যুয়াল স্টুডিওতে সাধারণ ডি-ফ্যাক্টো স্ট্যান্ডার্ড অনুসরণ করে। যদি এটি আপনার জন্য কোনও পার্থক্য করে, আপনি প্রাগমার আগে বা তার পরে প্রিপ্রোসেসর চিহ্নটি সংজ্ঞায়িত করেছেন, তবে আপনার একটি ভাঙা প্রকল্পের কনফিগারেশন রয়েছে (এটি ধরে নেওয়া হচ্ছে যে আপনি - নিরঙ্কুশভাবে - "প্রাকম্পম্পাইল্ড শিরোনাম" এবং "stdafx.h " )।
IInspectable

এমনকি "ভাঙা প্রকল্পের কনফিগারেশন" এর অর্থ কী? আমি একটি নতুন উইন 32 প্রকল্প তৈরি করেছি এবং উভয় দৃশ্যের পরীক্ষা করেছি।
মাইকেল হ্যাফরাতি

এই প্রিপ্রোসেসর প্রতীকটি ব্যবহারের জন্য সঠিক প্রয়োজনীয়তাগুলি সম্পর্কে জানতে দয়া করে অফিসিয়াল ডকুমেন্টেশনটি দেখুন ।
IInspectable
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.