-আমি ছাড়াও কী কী সতর্কবার্তা লোকদের দরকারী বলে মনে হয়েছে?
http://gcc.gnu.org/onlinesocs/gcc-4.3.2/gcc/Warning-Options.html
-আমি ছাড়াও কী কী সতর্কবার্তা লোকদের দরকারী বলে মনে হয়েছে?
http://gcc.gnu.org/onlinesocs/gcc-4.3.2/gcc/Warning-Options.html
উত্তর:
আমি নিয়মিত ব্যবহার করি:
gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wstrict-prototypes -Wmissing-prototypes
এই সেটটি এতে অব্যবহৃত লোকদের জন্য প্রচুর পরিমাণে ধরা পড়ে (যাদের কোডগুলি আমি এই পতাকাগুলি প্রথমবারের সাথে সংকলন করতে পারি); এটি খুব কমই আমাকে একটি সমস্যা দেয় (যদিও -ভ্যাসক্ট-কোয়েল মাঝে মাঝে উপদ্রব হয়)।
-O3
বা অনুরূপ কিছু যুক্ত করা ভাল ধারণা ; কোডটি অনুকূলিতকরণের সময় এমন সতর্কতা রয়েছে যা উত্পন্ন হয়।
-m32
এবং -m64
(পৃথক রানের ক্ষেত্রে অবশ্যই) আপনি যেভাবে ব্যবহার করেন printf()
এবং scaf()
রূপান্তরকরণের নির্দিষ্টকরণের পদ্ধতিতে বিভিন্ন বাগ থেকে আরও ভাল সুরক্ষা সরবরাহ করে ।
২০১-0-০৯-২০১১ খ্রিস্টাব্দে, জিসিসি সংস্করণ 4.6.1 সহ
আমার বর্তমান "বিকাশ" ওরফে
gcc -std = c89 -প্যাডেন্টিক-ওয়াল \ -নো-অনুপস্থিত-ধনুর্বন্ধনী-ওয়েক্স্রা-নো-অনুপস্থিত-ফিল্ড-ইনিশিয়ালাইজারস -ওয়ারফর্ম = 2 -উইচইচ-ডিফল্ট -Wwwitch-enum -Wcast-align -Wpointer-arith \ -ডাব্লিউড-ফাংশন-কাস্ট -স্ট্রিট-ওভারফ্লো = 5 -স্ট্রিস্ট-প্রোটোটাইপস-উইনলাইন \ -উন্ডফ-ওয়েস্টড-এক্সটার্নস -ডাব্ল্যাড-কোয়েল -শ্যাডো-ওয়ানরেচেবল-কোড \ -তাত্ত্বিক-আপ -Wfloat-সমতুল্য -wstric-aliasing = 2 -আগ্রহ-ডানসাল ls -ভোল্ড-শৈলী-সংজ্ঞা -অগ্রহ \ -ggdb3 -O0 -ফনো-ওমিট-ফ্রেম-পয়েন্টার -ফ্লোট-স্টোর -ফ্নো-কমন -স্ট্রিক্ট-এলিয়াসিং \ -এলএম
"মুক্তি" ওরফে
gcc -std = c89 -pedantic -O3 -DNDEBUG -flto -lm
2009-11-03 পর্যন্ত
"উন্নয়ন" ওরফে
gcc -Wall -Wextra -Wformat = 2 -Wwwwitc-default -Wcast-align -Wpointer-arith \ -উবাড-ফাংশন-কাস্ট -স্ট্রিস্ট-প্রোটোটাইপস-উইনলাইন-ওয়ান্ডেফ-ওয়েস্টেড-এক্সটার্নস \ -ডাব্লাইট-কোয়ালি -শ্যাডো -Wwrit-স্ট্রিংস-রূপান্তর-Wunreachable- কোড \ -স্ট্রিট-এলিয়াসিং = 2 -ফ্লোট-স্টোর -ফ্নো-কমন -স্ট্রিট-এলিয়াসিং \ -lm -std = c89 -pedantic -O0 -ggdb3 -pg - কভারেজ
"মুক্তি" ওরফে
gcc -lm -std = c89 -pedantic -O3 -DNDEBUG --combine -fwole-program -funrol-loops
-Wfloat-equal
আমার উপন্যাস যুক্ত। ধন্যবাদ মার্ক
-Wstrict-aliasing=2
আসলে সতর্কতা স্তর কমে যায় -Wstrict-aliasing=3
উহ্য দ্বারা -Wall
জিসিসি একটি সাম্প্রতিক সংস্করণের সাথে, অন্তত।
আমি পছন্দ করি কোড সতর্কতা মুক্ত রাখে।
#warning
ব্যবহারের একটি ভাল পার্শ্ব প্রতিক্রিয়া পরিত্রাণ বিবেচনা -Werror
।
-Werror
আপনার বিল্ডগুলিতে এটি ডিফল্টরূপে ব্যবহার না করে এটি আপনার কাছ থেকে বিভিন্ন সংকলক সংস্করণ ব্যবহার করছে এমন প্যাকেজকারীদের বিরক্ত করে যেহেতু সতর্কতাগুলি সংকলক সংস্করণে পরিবর্তিত হয় কখনও কখনও এমন কোড যা আপনার জন্য ফ্রি সতর্কতা দেয় অন্য কারও জন্য সতর্কতা থাকবে এবং তারপরে এটি বন্ধ করতে তাদের আপনার বিল্ড সিস্টেমে খনন করতে হবে।
আমি সি ++ দিয়ে শুরু করেছি, তাই যখন আমি সিআই শিখতে স্যুইচ করেছিলাম তখন অতিরিক্ত পায়ুসংক্রান্ত হওয়ার বিষয়টি নিশ্চিত করেছিলাম:
-ফিমেসেজ দৈর্ঘ্য = 0 -ansi -pedantic -std = c99 -যন্ত্র - ওয়াল -ভেক্সট্রা -লিখন-স্ট্রিং উইনিট-স্ব -ভ্যাসক্ট - সারিবদ্ধ -ভ্যাসক্ট-কোয়ালি -উইপয়েন্টার-অ্যারিথ -স্ট্রিট-আলিয়াসিং -ফর্ম্যাট = 2 -মোহাদ-ঘোষণা - স্মৃতি-অন্তর্ভুক্ত-ডায়ার -না-অব্যবহৃত-প্যারামিটার -উনিটায়ালাইজড -বোল-স্টাইল-সংজ্ঞা -স্ট্রিট-প্রোটোটাইপস -মোহানো-প্রোটোটাইপস
আপনি যে জিসিসি সংস্করণটি ব্যবহার করেন তার জন্য ম্যানুয়াল পান, সমস্ত সতর্কতা বিকল্পগুলি উপলভ্য করুন এবং তারপরে কেবলমাত্র তাদের নিষ্ক্রিয় করুন যার জন্য আপনার কাছে এটি করার বাধ্যতামূলক কারণ রয়েছে। (উদাহরণস্বরূপ, অ-সংশোধনযোগ্য তৃতীয় পক্ষের শিরোনাম যা অন্যথায় আপনাকে প্রচুর সতর্কতা দেয়)) কারণগুলি নথিভুক্ত করুন। (মেকফাইলে বা যেখানেই আপনি এই বিকল্পগুলি সেট করেছেন)) নিয়মিত বিরতিতে এবং যখনই আপনি আপনার সংকলকটি আপগ্রেড করেন সেটিংগুলিতে পর্যালোচনা করুন ।
সংকলকটি আপনার বন্ধু। সতর্কতা আপনার বন্ধু হয়। কমপ্লায়ারকে যতটা সম্ভব সম্ভাব্য সমস্যার কথা বলার জন্য যথাসাধ্য সুযোগ দিন।
আমিও ব্যবহার করি:
-স্ট্রিটিক-ওভারফ্লো = 5
ঐ কদর্য বাগ বুঝতে পারা করার পারেন ঘটতে যদি আমি কোডটি পূর্ণসংখ্যার ওভারফ্লো আচরণের উপর নির্ভর করে লিখুন।
এবং:
-ভেক্সট্রা
যা এমন কিছু বিকল্পকে সক্ষম করে যা ভালভাবে পছন্দ করে। বেশিরভাগ সি ++ এর জন্য।
আমি সাধারণত "-W -Wall -ansi -pedantic" দিয়ে সংকলন করি যা কোডটির সর্বোচ্চ মানের এবং বহনযোগ্যতা নিশ্চিত করতে সহায়তা করে।
-পেনডেন্টিক -ওয়াল-ওয়েক্সট্রা -নো-রাইটিং-স্ট্রিং -নো-অব্যবহৃত-প্যারামিটার
"আমাকে প্রচুর হিট করুন" মোডের জন্য, আমি -আমি ছেড়ে চলে যাই ...
আমি আমার কোড সতর্কতাটি বিনামূল্যে রাখতে চাই বিশেষত সি ++ সহ। সি সংকলক সতর্কতাগুলি প্রায়শই উপেক্ষা করা যেতে পারে, তবে অনেক সি ++ সতর্কতা উত্স কোডে মৌলিক ত্রুটি দেখায়।
Foo(int dndu, int dndv) : dndu_(dndu), dndv_(dndu) {}
-> তুলনামূলকভাবে স্পট। আপনি যদি সেই সতর্কবাণীতে বিরক্ত হন তবে আপনার প্যারামিটারটি সহজেই ছাঁটাই করা উচিত foo (int /*q*/)
, এটি আপনার কোডের পঠনযোগ্যতা বৃদ্ধি করে।
-ফ্লোয়েট-সমান, -শ্যাডো, -মিজানো-প্রোটোটাইপস,
এখনই আমি ব্যবহার:
-ওয়াল -ডাব্লু-ওয়েক্সট্রা -উইনসভারশন -শ্যাডো -ডাব্লাইট-কোয়েল -লিখন-স্ট্রিংস-ওয়ারার
আমি সেই তালিকাটি বেশিরভাগ " জিসিসি- তে একটি পরিচিতি" বই থেকে এবং তারপরে ডিফেন্সিভ প্রোগ্রামিংয়ের সম্পর্কে উলরিচ ড্রেপার পুনঃসংশোধন থেকে কিছু গ্রহণ করেছি ( http://people.redhat.com/drepper/Defender-slides.pdf ) ।
তবে আমার তালিকার পিছনে আমার কোনও বিজ্ঞান নেই, এটি কেবল একটি ভাল তালিকার মতো মনে হয়েছিল।
/ জোহান
দ্রষ্টব্য: যদিও আমি এই পেডেন্টিক পতাকাগুলি পছন্দ করি না ...
দ্রষ্টব্য: আমি মনে করি যে -W এবং -Wextra কম-বেশি একই জিনিস।
আমি সাধারণত ব্যবহার করি
gcc -Wall -W -Wunused-parameter -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wsign-compare -Wconversion -Wshadow -Wcast-align -Wparentheses -Wsequence-point -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wnested-externs -Wredundant-decls -Werror -Wdisabled-optimization -pedantic -funit-at-a-time -o
-Wfatal-errors
-Wdeclaration-after-statement
যে এমএসভিসি (যা এখনও মূলত একটি সি 89 সংকলক) হ্যান্ডেল করবে না এমন কোড সনাক্ত করার জন্য আমাকে ' ' যুক্ত করতে হবে। 'এটি একটি উপদ্রব। '-Wextra
' যোগ করা কিছু অন্যান্য সমস্যাও চিহ্নিত করতে পারে।