জি ++ -তে স্পর্শকাতর পতাকা ব্যবহার করবেন কি না?


16

আমি সি ++ শিখছি এবং অনুশীলনের জন্য আমি লিনাক্সে জি ++ ব্যবহার করছি।

  1. আমি জানতে চাই যে প্রোগ্রামার হিসাবে কাজ করা লোকেরা জি ++ -প্যাডেন্টিক পতাকা ব্যবহার করে এবং বাস্তব বিশ্বে এর গুরুত্বও ব্যবহার করে।

  2. অন্যান্য সংকলকগুলির কী, তারাও কি এটিকে অনুমতি দেয়? এটি কি কিছু ডি-ফ্যাক্টো স্ট্যান্ডার্ড হয়ে উঠেছে?

আমি আগ্রহী কারণ আমি সি ++ প্রাইমার পড়ছি যেখানে লেখক উল্লেখ করেছেন যে অ্যারে সংজ্ঞা এবং অ + ডিফল্টরূপে জি ++ এর মাত্রা হিসাবে নন-কনস্ট্যান্ট এক্সপ্রেশনটি ব্যবহার করা অবৈধ। এবং এমন অন্যান্য জিনিসও থাকতে পারে যা সম্পর্কে আমি অজানা।



উত্তর:


21

হ্যাঁ, একেবারে এটি করুন আসলে, আপনাকে ম্যানুয়াল পৃষ্ঠাটি অধ্যয়ন করতে হবে -pedanticএবং এর চেয়ে আরও সতর্কতা চালু -Wallকরতে হবে।

না, কোনও মান নেই এমএসভিসি /W4উদাহরণস্বরূপ ব্যবহার করে ।


7
+1, আমি সাধারণত করি -Wall -Wextra -Werror -pedantic -std=c++0x:)
গ্রেফ্যাড

4
@ জ্যারেডবুরোস: -pedanticজিসিসির ম্যানুয়ালটি বোঝায় যে এটি কেবল সি এর জন্যই ব্যবহৃত হয়েছে, এবং আমি -std=c++14নতুন প্রকল্পগুলিতে ব্যবহার করতে এগিয়ে চলেছি Act
গ্রেফ্যাড

1
@ গ্রেফ্যাডে আহ, আমার উচিত ছিল, -Wall -Wextra -Werror -std=c++14:)
জ্যারেড বুরোজ

1
আমি সবেমাত্র-বিস্মৃত-ত্রুটিগুলি আবিষ্কার করেছি যা ত্রুটিগুলি সতর্কতা নয়।
গ্যালিক

6
@ ভিলাসভি ওয়েল -Werrorসমস্ত সতর্কতাগুলিকে ত্রুটি করে তোলে। তবে -pedantic-errorsকেবল Standard ICO C++লঙ্ঘনের বাইরে ত্রুটি করে ।
গালিক

10

যদিও আমি বেশ কিছু সময়ের জন্য সি ++ প্রোগ্রাম না করেছিলাম, আমি আপনাকে এই পতাকাটি ব্যবহার করার পরামর্শ দেব। এটি আপনাকে স্ট্যান্ডার্ড-কমপ্লায়েন্ট কোড তৈরি করতে সহায়তা করে এবং প্রত্যেকের জীবনকে সহজ করে তুলবে। আফাইক, অন্যান্য বেশিরভাগ সংকলক জিসিসি / জি ++ এক্সটেনশনগুলিকে সমর্থন করে না।

উদাহরণস্বরূপ, আমি এটিকে ঘৃণা করি, যখন আমি কোডটি সংকলন করতে পারি না কারণ কেবলমাত্র মূল বিকাশকারী অ-মানক সংকলক এক্সটেনশনের বিরুদ্ধে কোড করার সিদ্ধান্ত নিয়েছিলেন।

আমি বাজি দিয়েছি যে সি / সি ++ তে লেখা একটি বিশাল পরিমাণে (20% বলি) লিনাক্স প্রোগ্রাম জিসিসি / জি ++ ব্যতীত অন্য কোনও সংকলন করে না, যা আমাকে করুণা করে তোলে। সর্বদা মান অনুসরণ করুন।


2
শেষবার যখন আমি অন্যান্য সংকলকগুলি ব্যবহার করার চেষ্টা করেছি, আমি বলব এটি অন্যান্য সংকলকগুলির সাথে কাজ করবে এমন 20% এর মতো এবং 80% জিসিসি এক্সটেনশনের উপর নির্ভরশীল।
জেরি কফিন

6

ব্যক্তিগতভাবে আমি ব্যবহার:

-ওয়াল-ওয়েক্সট্রা -শ্যাডো-ওয়েফসি ++ -স্ট্রিট-এলিয়াসিং-ওয়ানসি -পেনডেন্টিক-ওয়ারার

এইভাবে অনেক সতর্কবার্তা চালু হয়, তবে আরও গুরুত্বপূর্ণভাবে সমস্ত সতর্কতাগুলিকে ত্রুটি হিসাবে বিবেচনা করা হয় (যেহেতু বেশিরভাগ সতর্কতাগুলি আপনার চিন্তায় যৌক্তিক ত্রুটি)।


আপনি কি 2019 সালে এই তালিকায় কিছু যুক্ত করবেন?
আয়কসান

1
@ অ্যাক্সান এটি সর্বনিম্ন সেট যা আমি প্রত্যেককে ব্যবহার করার পরামর্শ দিই। তবে আরও একটি গুচ্ছ রয়েছে যা দরকারী। তবে আপনাকে ডকুমেন্টেশনটি রিড করতে হবে এবং সেগুলি আপনার জন্য কার্যকর কিনা তা দেখতে হবে। একবার দেখুন-Wunreachable-code -Wno-long-long
মার্টিন ইয়র্ক

1
@ অ্যাক্সান প্রোফাইলিং কোড তৈরি করার সময়:-g -pg -fprofile-arcs -ftest-coverage
মার্টিন ইয়র্ক

1
অ্যাক্সান যখন ডিবাগ তৈরি করছেন-g -O0
মার্টিন ইয়র্ক

1
অ্যাক্সান @ প্রোডাকশন কোড তৈরি করার সময়-O3
মার্টিন ইয়র্ক

1

-pedanticপতাকাটি ব্যবহার করা বেশ প্রয়োজনীয় ।

আমি কেবল যুক্ত করব, যে বর্তমান মানদণ্ডের সাথে এটি এর মতো কিছু ব্যবহার করার পরামর্শ দেওয়া হচ্ছে:

-std=c++17 -Wall -Wextra -Werror -Wpedantic -pedantic-errors

কোথায়:

  • -std=c++17এটি 2017 সালে প্রকাশিত সি ++ স্ট্যান্ডার্ডের সংশোধন মেনে চলতে বলে, আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন ।

  • -Wall এটি বলে:

    কিছু ব্যবহারকারীর সন্দেহজনক বিবেচনা করা এমন নির্মাণ সংক্রান্ত সমস্ত সতর্কতা সক্ষম করুন এবং এটি এড়ানো সহজ (বা সতর্কতা প্রতিরোধের জন্য সংশোধন করা) এমনকি ম্যাক্রোগুলির সাথে একত্রে, অন্য কথায় কিছু সংকেত সতর্কতাও রয়েছে।

  • -Wextra এটিকে আরও কিছু সতর্কতা সক্ষম করতে বলছে, এখনও নয়।

  • -Werror এটিকে সমস্ত সতর্কতাটিকে ত্রুটিতে পরিণত করতে বলে।

  • -Wpedanticবা কেবল এটি -pedanticবলে:

    কঠোর আইএসও সি এবং আইএসও সি ++ দ্বারা দাবি করা সমস্ত সতর্কতা জারি করুন; নিষিদ্ধ এক্সটেনশনগুলি ব্যবহার করে এমন সমস্ত প্রোগ্রাম এবং আইএসও সি এবং আইএসও সি ++ অনুসরণ করে না এমন কিছু অন্যান্য প্রোগ্রাম প্রত্যাখ্যান করুন।

  • -pedantic-errors যখনই বেস স্ট্যান্ডার্ড (দেখুন -ডেস্কট্যান্টিক) ডায়াগনস্টিকের প্রয়োজন হয় তখন এটিকে ত্রুটি দিতে বলে।


এই সেটটি কেবলমাত্র প্রাথমিকভাবে না শুধুমাত্র দরকারী, কারণ তারা ধীরে ধীরে প্রতিটি সতর্কতা শিখবে এটির ত্রুটি হওয়ার সম্ভাবনা রয়েছে, তবে সাধারণ ব্যবহারের ক্ষেত্রেও।

সমস্ত সতর্কতা বিকল্পগুলি জিএনইউ / জিসিসি পৃষ্ঠায় এখানে বিশদে বর্ণনা করা হয়েছে

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