আপনি পারবেন না।
জিসিসি ৪.৪.০ এর জন্য ম্যানুয়ালটি কেবলমাত্র সেই সংস্করণের জন্যই বিস্তৃত তবে এটি ৪.৪.০-এর জন্য সম্ভাব্য সমস্ত সতর্কতাগুলির তালিকা করে list আপনি যে পৃষ্ঠায় লিঙ্ক করেছেন সেগুলি এগুলিই নয়, উদাহরণস্বরূপ কিছু ভাষা-নির্দিষ্ট বিকল্প সি ++ বিকল্প বা ওজেজে-সি বিকল্পগুলির পৃষ্ঠায় রয়েছে। তাদের সমস্তটি খুঁজে পেতে বিকল্প সংক্ষিপ্তসারটি দেখানো ভাল
সমস্ত কিছু চালু করলে অন্তর্ভুক্ত থাকবে -Wdouble-promotion
যা একটি সিপিইউগুলিতে কেবলমাত্র 32-বিট একক-নির্ভুলতা ভাসমান-পয়েন্ট ইউনিটের সাথে প্রাসঙ্গিক যা float
হার্ডওয়ারে প্রয়োগ করে তবে double
সফ্টওয়্যারটিতে অনুকরণ করে। হিসাবে গণনা করা double
সফ্টওয়্যার অনুকরণ ব্যবহার করবে এবং ধীর হবে। এটি কিছু এম্বেড থাকা সিপিইউগুলির জন্য প্রাসঙ্গিক, তবে desktop৪-বিট ভাসমান-পয়েন্টের জন্য হার্ডওয়্যার সমর্থন সহ আধুনিক ডেস্কটপ সিপিইউগুলির জন্য সম্পূর্ণ অপ্রাসঙ্গিক।
সাধারণত কার্যকর নয় এমন আরেকটি সতর্কতা হ'ল -Wtraditional
, যা নিখুঁতভাবে সুগঠিত কোড সম্পর্কে সতর্ক করে যা traditionalতিহ্যবাহী সি, যেমন "string " "concatenation"
, বা আইএসও ফাংশন সংজ্ঞায়নের আলাদা অর্থ (বা কাজ করে না) রয়েছে ! আপনি কি 30 বছরের পুরানো সংকলকগুলির সাথে সামঞ্জস্যতা সম্পর্কে সত্যিই যত্নশীল? আপনি কি সত্যিই লেখার জন্য একটি সতর্কতা চান int inc(int i) { return i+1; }
?
আমি মনে করি যে -Weffc++
এটি কার্যকর হবে না, এটি কার্যকর সি ++ এর পুরানো প্রথম সংস্করণের উপর ভিত্তি করে তৈরি করা হয়েছে যা পুরোপুরি বৈধ সি ++ (এবং যার জন্য বইটির পরবর্তী সংস্করণগুলিতে গাইডলাইন পরিবর্তিত হয়েছে) সম্পর্কে সতর্ক করে দিয়েছি আমি চাই না হুঁশিয়ারি দিয়েছি যে আমি std::string
আমার কনস্ট্রাক্টরে কোনও সদস্যকে আরম্ভ করিনি ; এটির একটি ডিফল্ট নির্মাতা আছে যা আমি যা চাই ঠিক তাই করি, কেন আমি m_str()
এটি কল করতে লিখব ? যে -Weffc++
সতর্কতাগুলি সহায়ক হবে সেগুলি সংকলকটির সঠিকভাবে (মিথ্যা নেতিবাচক দিক দেওয়া) সনাক্ত করা খুব কঠিন এবং যেগুলি কার্যকর নয়, যেমন সমস্ত সদস্যকে সুস্পষ্টভাবে সূচনা করা, খুব বেশি শব্দ উত্পন্ন করে মিথ্যা ইতিবাচকতা দেয়।
লাক ড্যান্টন অদৃশ্য সতর্কতার একটি দুর্দান্ত উদাহরণ প্রদান করেছেন -Waggregate-return
যা প্রায় অবশ্যই সি ++ কোডের জন্য কোনও অর্থ দেয় না।
অর্থাত্ আপনি সত্যিই সমস্ত সতর্কতা চান না , আপনি কেবল তাই করেন বলে মনে করেন।
ম্যানুয়ালটি পড়ুন, সেগুলি সম্পর্কে পড়ুন, সিদ্ধান্ত নিন আপনি কোনটি সক্ষম করতে চাইতে পারেন, তাদের চেষ্টা করুন। আপনার সংকলকের ম্যানুয়ালটি পড়া যাই হোক না কেন একটি ভাল জিনিস টিএম , একটি সংক্ষিপ্ত কাটা নেওয়া এবং আপনি যে সতর্কতাগুলি বুঝতে পারছেন তা সক্ষম করে তোলা খুব ভাল ধারণা নয়, বিশেষত যদি এটি আরটিএফএম হওয়া এড়াতে হয়।
যে কেউ কেবল সমস্ত কিছু চালু করে সে সম্ভবত এটি করছে কারণ তারা নিখুঁত কারণ কারণ বা একটি বিন্দু কেশিক বস "কোন সতর্কবাণী" নেই।
কিছু সতর্কতা গুরুত্বপূর্ণ, এবং কিছু না। আপনাকে বৈষম্যমূলক হতে হবে বা আপনার প্রোগ্রামটি গোলমাল করতে হবে। উদাহরণস্বরূপ, বিবেচনা করুন -Wdouble-promotion
। আপনি যদি এম্বেড থাকা সিস্টেমে কাজ করছেন তবে আপনি এটি চাইবেন; আপনি যদি কোনও ডেস্কটপ সিস্টেমে কাজ করে থাকেন তবে আপনি সম্ভবত না। এবং আপনি চান -Wtraditional
? আমি এটাকে সন্দেহ করি.
সম্পাদনা করুন: ডাব্লুউন্টিক্স হিসাবে বন্ধ থাকা সমস্ত সতর্কতাগুলি সক্ষম করতে -অল-সমস্ত দেখুন ।
সংশোধন 2: সংকলক সংস্করণের উপর নির্ভর করে মেকফাইলদের বিভিন্ন সতর্কতা ব্যবহার করা দরকার সে সম্পর্কে দেবসোলারের অভিযোগের জবাবে, যদি -Wall -Wextra
উপযুক্ত না হয় তবে সংকলক-নির্দিষ্ট এবং সংস্করণ-নির্দিষ্ট সিএফএলএজিএস ব্যবহার করা কঠিন নয়:
compiler_name := $(notdir $(CC))
ifeq ($(compiler_name),gcc)
compiler_version := $(basename $(shell $(CC) -dumpversion))
endif
ifeq ($(compile_name),clang)
compiler_version := $(shell $(CC) --version | awk 'NR==1{print $$3}')
endif
# ...
wflags.gcc.base := -Wall -Wextra
wflags.gcc.4.7 := -Wzero-as-null-pointer-constant
wflags.gcc.4.8 := $(wflags.gcc.4.7)
wflags.clang.base := -Wall -Wextra
wflags.clang.3.2 := -Weverything
CFLAGS += $(wflags.$(compiler_name).base) $(wflags.$(compiler_name).$(compiler_version))