-o আউটপুট ফাইলের নাম পরিবর্তন করে (আমি খুঁজে পেয়েছি --help ব্যবহার করে)
কিন্তু আমি কি করতে পারি না -Wall
?
-o আউটপুট ফাইলের নাম পরিবর্তন করে (আমি খুঁজে পেয়েছি --help ব্যবহার করে)
কিন্তু আমি কি করতে পারি না -Wall
?
man
প্রোগ্রামগুলির জন্য এন্ট্রিগুলি পড়ার চেষ্টা করুন যদি আপনি জানতে চান যে একটি স্যুইচ কী করে, বা কোন স্যুইচ উপলব্ধ। man
পৃষ্ঠার gcc
উপর পড়া যায় linux.die.net/man/1/gcc - আপনি পাঠ্য "-Wall" জন্য একটি দ্রুত সেখানে অনুসন্ধান করতে পারি না
উত্তর:
এটি "সকলকে সতর্ক করুন" এর পক্ষে সংক্ষিপ্ত - এটি g ++ আপনাকে যে সমস্ত সতর্কতা সম্পর্কে বলতে পারে সেগুলি (প্রায়) চালু করে। সাধারণত একটি ভাল ধারণা, বিশেষত আপনি যদি একজন শিক্ষানবিস, কারণ এই সতর্কতাগুলি বোঝা এবং ঠিক করা আপনাকে আপনার কোডের বিভিন্ন ধরণের সমস্যা সমাধানে সহায়তা করতে পারে।
-Wextra
এবং দিয়ে চালু করা যেতে পারে -pedantic
।
-Wall -Wextra
, এবং তারপর ম্যানুয়াল পড়া অনেক যেমন এটি আরো কারণ এমনকি সতর্কবার্তা আপনি সম্ভব হিসাবে সক্ষম পারে -Wextra
শুধুমাত্র একটি ছোট উপশাখা হচ্ছে ...
-Wunreachable-code
কিছুক্ষণ আগে অক্ষম না করে থাকত তবে আপেল এই দিনগুলিতে অনেক বেশি সুখী হত । ;-)
ম্যান জিসিসি দেখুন।
-ওয়াল এই সতর্কতাগুলি চালু করে:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
Objective-C only) -Wimplicit-function-declaration (C and Objective-C only)
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
-ভেক্সট্রায় রয়েছে:
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
আরও অনেক সতর্কতা রয়েছে যা আপনাকে স্পষ্টভাবে চালু করতে হবে।
উদাহরণস্বরূপ আমাদের সি কোডের জন্য আমরা ব্যবহার করি:
-ওয়াল-ওয়েক্সট্রা-ওয়েলগ্র্যাট-রিটার্ন -ডাব্লাস্ট-এলাইন -ডাব্লাইট-কোয়ে -ডিজিড-অপটিমাইজেশন -উডিভ-বাই-শূন্য -উন্ডিফ-লেবেল-ওয়ার্মপ্যাট-এক্সট্রা-আরগস-ওয়ার্মফ্রেট-ননলিটারেল-ওয়ার্মপ্রেট-সুরক্ষা -উইম্পোর্ট-উইনিট-সেল্ফ-উইনলাইন-উইনডিয়াল-পিচ-উইজম্প-মিসস-আর--লোজিকাল-অপ-ওয়ারার = মিসিং-ব্রেসস-উইমিসিং-ডিক্লেয়ারেশনস-উইন-মিসিং-ফরম্যাট-অ্যাট্রিবিউট -উমিসিচিং-ডায়ারস -উমলটিচার -ওয়াকপ্যাকড -Wpointer-arith -Wreturn-type -Wsequence-point -Wwign-ਤੁਲਨਾ -Wstric-aliasing -Wstict-aliasing = 2 -উসুইচ -উইচইচ-ডিফল্ট -Werror = undef -Wno- অব্যবহৃত-ওয়ার্ভাডিয়্যাডিক-ম্যাক্রোস -উত্তরণ-স্ট্রিংস-ওয়ার্ক ++ -compat -Werror = ঘোষণা-পরে-বিবৃতি -Werror = অন্তর্নিহিত-ফাংশন-ঘোষণা -Wmissing- প্রোটোটাইপস-ওয়ারার = নেস্টেড-এক্সটার্নস-ওয়ারার = পুরানো-শৈলী-সংজ্ঞা -Werror = কঠোর-প্রোটোটাইপস
বা কেবল https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html সহ সতর্কতার সেট
দুঃখের বিষয়, উত্তরের কোনও উত্তরই ম্যানুয়ালের প্রকৃত প্রাসঙ্গিক অংশের উদ্ধৃতি দিচ্ছে না, যা সত্যই এটিকে এনে দেয়:
এটি এমন কিছু নির্মাণ সংক্রান্ত সমস্ত সতর্কতাগুলিকে সক্ষম করে যা কিছু ব্যবহারকারী প্রশ্নবিদ্ধ মনে করে এবং ম্যাক্রোগুলির সাথে একত্রে এমনকি এড়াতে সহজ (বা সতর্কতা প্রতিরোধে পরিবর্তন করা))
[...]
মনে রাখবেন যে কিছু সতর্কতা পতাকা এর দ্বারা নিহিত নয়
-Wall
। তাদের মধ্যে কয়েকটি এমন নির্মাণ সম্পর্কে সতর্ক করে যা ব্যবহারকারীরা সাধারণত সন্দেহজনক হিসাবে বিবেচনা করেন না, তবে যা মাঝে মধ্যে আপনি যাচাই করতে চাইতে পারেন; অন্যরা এমন কিছু নির্মাণের বিষয়ে সতর্ক করে যা প্রয়োজনীয় বা কঠিন কিছু ক্ষেত্রে এড়াতে হবে এবং সতর্কতা দমন করার জন্য কোডটি পরিবর্তন করার কোনও সহজ উপায় নেই। তাদের মধ্যে কিছু দ্বারা সক্ষম করা হয়েছে-Wextra
তবে তাদের অনেককে পৃথকভাবে সক্ষম করতে হবে।
এরগো:
-Wall
না না "সব সতর্কবার্তা" মানে।নীচে লাইন, এটি আপনার সেট করা উচিত সর্বনিম্ন সর্বনিম্ন সতর্কতা সম্পর্কে। আরও -Wall -Wextra
ভাল, এটি এখনও আপনার সংকলকটি যা করতে পারে তা যাচাই করে সমস্ত ত্রুটি ব্যবহার করছে না।
ব্যক্তিগতভাবে আমি এর চেয়ে কম যাই না -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
। আমার সমস্ত বর্তমান প্রকল্পগুলি আসলে এর চেয়ে দীর্ঘ সতর্কতার একটি তালিকা ব্যবহার করে (তাদের কোনওটিই ট্রিগার না করে)। এবং আমি নতুন বিকল্পগুলির জন্য প্রতিটি বড় রিলিজে ম্যানুয়ালটি পরীক্ষা করি। সংকলকটি আপনার বন্ধু। এটি আপনাকে যা ডায়াগনস্টিক দিতে পারে তা ব্যবহার করুন।
-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
আমি g++ -std=c++11
যখন সি ++ এবং প্রোগ্রামিং শিখি তখন সংকলনকালে আপনার ব্যবহারের জন্য আমাকে পরামর্শ দিন ? বা এই অংশটি এড়িয়ে যাওয়া উচিত এবং পরে ত্রুটি বার্তাগুলি পতাকা ব্যবহার করা শুরু করা উচিত? যদি তাই হয় তবে আমি কখন ত্রুটি বার্তাগুলি দিয়ে শুরু করব?
এটি এমন সতর্কতাগুলিকে সক্ষম করে যা কার্যকর এবং হিসাবে বিবেচিত হয় জিসিসি লেখকদের উত্স থেকে এড়ানো সহজ । এছাড়াও -ডব্লিউ (নতুন রিলিজগুলিতে ওয়েক্সট্রা) রয়েছে যা দরকারী বলে মনে করা হয় তবে যার জন্য কাজের আশেপাশে মিথ্যা ধনাত্মকতা কঠিন হতে পারে বা আনাড়ি কোডের ফলস্বরূপ।
জিসিসিতে অন্যান্য সতর্কতাগুলির একটি গুচ্ছও রয়েছে, সাধারণত কম কার্যকর। Http://gcc.gnu.org/onlinesocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Otions দেখুন
এটি সমস্ত সতর্কতা সক্ষম করে। ("সমস্ত সতর্কতা" হিসাবে পড়ে)
-Wall
"সমস্ত সতর্কতা" এর পরিবর্তে কেবল "সর্বাধিক সতর্কতা" অর্থ means
এটি সমস্ত সতর্কতা দেখায়। আমি -pedantic
কোডের কিছু অ-সঙ্গতিপূর্ণ অংশ সম্পর্কে সতর্ক করতে ব্যবহার করার পরামর্শ দেব recommend