আমার লিনাক্স বিকাশ প্রকল্পের জন্য কলং বনাম জিসিসি


175

আমি কলেজে আছি এবং একটি প্রকল্পের জন্য আমরা সি ব্যবহার করছি আমরা জিসিসি এবং কলং অনুসন্ধান করেছি এবং ক্ল্যাং জিসিসির চেয়ে অনেক বেশি ব্যবহারকারী বান্ধব বলে মনে হচ্ছে। ফলস্বরূপ, আমি ভাবছি যে লিনাক্সে সি এবং সি ++ বিকাশের জন্য জিসিসির বিপরীতে ঝাঁকুনি ব্যবহার করার সুবিধা বা অসুবিধাগুলি কী?

আমার ক্ষেত্রে এটি শিক্ষার্থী স্তরের প্রোগ্রামগুলির জন্য ব্যবহৃত হবে, উত্পাদন নয়।

যদি আমি কলঙ্ক ব্যবহার করি তবে আমার কি জিডিবি দিয়ে ডিবাগ করা উচিত এবং জিএনইউ মেক ব্যবহার করা উচিত, অথবা অন্য কোনও ডিবাগার ব্যবহার করে এবং ইউটিলিটি তৈরি করা উচিত?


7
আমি যতদূর বলতে পারি, ক্ল্যাং এখনও "পরিপক্ক" থেকে খুব দূরে, বিশেষত স্ট্যান্ডার্ড লাইব্রেরি সমর্থন সম্পর্কে। যাইহোক, এটিতে দুর্দান্ত ত্রুটি বার্তা রয়েছে, তাই আপনি ক্ল্যাং-এ কোড চেষ্টা করে সর্বদা একটি রহস্যময় সংকলক ত্রুটির কাছে যেতে পারেন। ঝনঝনানি সি +++ এর সাথে সিও কম্পাইল করতে পারে, আমি বিশ্বাস করি।
কেরেরেক এসবি

3
@ কেরেকএসবি: ঝাঁকুনি থেকে "স্ট্যান্ডার্ড লাইব্রেরি সমর্থন" এর কোন উপাদানটি অনুপস্থিত?
স্টিফেন ক্যানন

2
@ স্টেফেনকনন: গতবার চেষ্টা করার সময় আমাকে লাইবস্টিডিসি ++ ব্যবহার করতে হয়েছিল (যা আমি যতদূর বুঝতে পেরেছি তা কলঙ্কের অংশ নয়)। এবং ঠিক অন্য দিন আমরা এই সমস্যা ছিল । যাইহোক, আমি রক্তপাতের প্রান্তটি অনুসরণ করছি না, সুতরাং আমার দৃষ্টিভঙ্গি সম্পূর্ণ অপ্রচলিত হতে পারে।
কেরেক এসবি

4
@ কেরেকএসবি: আপনার লিঙ্কটি সম্পর্কে, কলং খাঁটি উইন্ডোজে কাজ করে না। এটি যদিও MinGW এ কাজ করে। স্ট্যান্ডার্ড লাইব্রেরি সম্পর্কিত, এই মুহুর্তে কলংয়ের আসল কোনও মানক গ্রন্থাগার অংশ নেই। ক্ল্যাং ওএসএক্সে লিবিসি ++ দিয়ে বান্ডিল করা হয়েছে, তবে অন্যান্য পরিবেশে libc ++ পুরোপুরি পোর্ট করা যায় না, সুতরাং সেই ঝনঝনিতে আরও একটি স্ট্যান্ডার্ড লাইব্রেরি প্রয়োগ করার প্রয়োজন হয়। লিনাক্সে, libstdc ++ কাজ করে।
ম্যাথিউ এম।

1
@ কেরেকএসবি: সি ++ 98 100% সমর্থিত। সি ++ ১১ বেশিরভাগই সমর্থিত (সর্বশেষে আমি পরীক্ষা করে দেখেছি, <atomic>সমর্থিত নয়, সম্ভবত কিছু অন্যান্য ছোট জিনিস অনুপস্থিত ... আমি এটি ব্যবহার করতে পারি না, তাই আমি এটির সাথে গতি বাড়ানোর পক্ষে পুরোপুরি প্রস্তুত নই)।
জেমস ম্যাকনেলিস

উত্তর:


122

সম্পাদনা করুন:

জিসিসি ছেলেরা সত্যিই জিসিসি (আহ প্রতিযোগিতা) -এর নির্ণয়ের অভিজ্ঞতা উন্নত করেছে। তারা এখানে উইকিপিডিয়া প্রদর্শনের জন্য তৈরি করেছে । জিসিসি ৪.৮-তে এখন বেশ ভাল ডায়াগনস্টিকসও রয়েছে (জিসিসি 4.9x অ্যাডেড কালার সাপোর্ট)। ঝনঝন এখনও নেতৃত্বে রয়েছে, তবে ফাঁকটি বন্ধ হচ্ছে।


মূল:

শিক্ষার্থীদের জন্য, আমি নিঃশর্তভাবে কলংয়ের পরামর্শ দেব।

জিসিসি এবং ক্ল্যাংয়ের মধ্যে উত্পন্ন কোডের ক্ষেত্রে পারফরম্যান্স এখন অস্পষ্ট (যদিও আমি মনে করি যে সিসি ৪.7 এখনও লিড রয়েছে, এখনও আমি চূড়ান্ত মানদণ্ড দেখতে পাইনি), তবে শিক্ষার্থীদের শেখার পক্ষে এটি কোনওভাবেই গুরুত্বপূর্ণ নয়।

অন্যদিকে, ক্ল্যাংয়ের অত্যন্ত স্পষ্ট ডায়াগনস্টিকগুলি স্পষ্টতই ব্যাখ্যা করার জন্য সহজতর।

এই সাধারণ স্নিপেট বিবেচনা করুন:

#include <string>
#include <iostream>

struct Student {
std::string surname;
std::string givenname;
}

std::ostream& operator<<(std::ostream& out, Student const& s) {
  return out << "{" << s.surname << ", " << s.givenname << "}";
}

int main() {
  Student me = { "Doe", "John" };
  std::cout << me << "\n";
}

আপনি এখনই লক্ষ্য করবেন যে Studentক্লাসের সংজ্ঞার পরে আধা-কোলন অনুপস্থিত , তাই না :)?

ঠিক আছে, জিসিসি এটি ফ্যাশনের পরেও লক্ষ্য করে :

prog.cpp:9: error: expected initializer before ‘&’ token
prog.cpp: In function int main()’:
prog.cpp:15: error: no match for operator<<’ in std::cout << me
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:131: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:173: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:177: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/ostream.tcc:97: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:184: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/ostream.tcc:111: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:195: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:208: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:213: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:217: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:225: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/ostream:229: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/ostream.tcc:125: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]

এবং কলং এখানে ঠিক অভিনীত হয় না, তবে এখনও:

/tmp/webcompile/_25327_1.cc:9:6: error: redefinition of 'ostream' as different kind of symbol
std::ostream& operator<<(std::ostream& out, Student const& s) {
     ^
In file included from /tmp/webcompile/_25327_1.cc:1:
In file included from /usr/include/c++/4.3/string:49:
In file included from /usr/include/c++/4.3/bits/localefwd.h:47:
/usr/include/c++/4.3/iosfwd:134:33: note: previous definition is here
  typedef basic_ostream<char>           ostream;        ///< @isiosfwd
                                        ^
/tmp/webcompile/_25327_1.cc:9:13: error: expected ';' after top level declarator
std::ostream& operator<<(std::ostream& out, Student const& s) {
            ^
            ;
2 errors generated.

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


2
উম ... গতবার আমি যাচাই করেছিলাম এমন একটি নিবন্ধ পড়েছিলাম যা বিভিন্ন বেঞ্চমার্ক প্রকাশ করেছিল যেখানে ঝাঁকুনি দিয়ে পরীক্ষা করে জিসি বাইরে বেরিয়ে আসে। সূত্র: clang.llvm.org/features.html#performance

31
@ অ্যাসেনশনসিস্টেমস: সাবধান, এই পরীক্ষাগুলি ক্ল্যাং বাইনারি নিজেই প্রদর্শন করে (এবং এটি কিছুক্ষণ আগে ছিল), আপনি যে বাইনারিটি সংকলন করেছিলেন তার পারফরম্যান্সটি নয়।
ম্যাথিউ এম।

এটি একটি ভাল বিষয় আমি সংকলিত এক্সিকিউটেবলের মধ্যে একটি স্ট্যান্ড আপ তুলনা দেখতে আগ্রহী হব। আমি এই ছাপের মধ্যে রয়েছি যে ঝাঁকুনি অপ্টিমাইজেশনে আরও ভাল কাজ করে তবে আমি আসলে কোনও মানদণ্ড দেখিনি। আমি তা পরীক্ষা করব.

4
@ অ্যাসেনশনসিস্টেমস: এখানে সর্বশেষ বেঞ্চ আমি জিসিসি 4.6 থেকে এলএলভিএম 3.0 এর সাথে তুলনা করার বিষয়ে সচেতন যা গড়পথে জিসিসির নিট সুবিধা দেখায়। এছাড়াও আকর্ষণীয় ড্রাগনএগজি বেঞ্চ হতে পারে , ড্রাগনএজিজি একটি প্লাগইন যা জিসিসি ফ্রন্ট-এন্ড (এবং সম্ভবত অপটিমাইজার) এবং তারপরে এলএলভিএম ব্যাকএন্ড কোডটি তৈরি করতে দেয়।
ম্যাথিউ এম।

1
গতবার যখন আমি পরীক্ষা করেছিলাম, ফোরোনিক্স বেঞ্চমার্কগুলি খুব অবিশ্বস্ত ছিল: সংকলক পতাকাগুলি সঠিকভাবে নথিভুক্ত করা হয়নি, তবে ফলাফলগুলি বলেছে যে জিনিসগুলি সঠিকভাবে সেট করা হয়নি।
ইমন নেরবোন

35

এই মুহুর্তে, জিসিসির কাছে ক্ল্যাংয়ের চেয়ে সি ++ 11 বৈশিষ্ট্যের জন্য আরও ভাল এবং আরও সম্পূর্ণ সমর্থন রয়েছে। এছাড়াও, জিসিসির জন্য কোড জেনারেটর ক্ল্যাংয়ের চেয়ে ভাল অপ্টিমাইজেশন সম্পাদন করে (আমার অভিজ্ঞতার সাথে, আমি কোনও বিস্তৃত পরীক্ষা দেখিনি)।

অন্যদিকে, কলং প্রায়শই জিসিসির চেয়ে কোডগুলি আরও দ্রুত কম্পাইল করে এবং যখন আপনার কোডে কোনও সমস্যা আছে তখন আরও ভাল ত্রুটি বার্তা উত্পন্ন করে।

কোনটি ব্যবহার করবেন তা চয়ন করা আপনার পক্ষে কী কী গুরুত্বপূর্ণ তা নির্ভর করে। সংকলনের সুবিধার চেয়ে আমি সি ++ 11 সমর্থন এবং কোড জেনারেশনের মানেরটিকে বেশি মূল্য দিয়েছি। এ কারণে আমি জিসিসি ব্যবহার করি। আপনার জন্য, ট্রেড-অফগুলি আলাদা হতে পারে।


3
এখানে জিসিসি 4.6 বনাম ক্ল্যাং 3.0 এর তুলনা করে বুলডোজার প্ল্যাটফর্মের সাথে সম্পর্কিত একটি পূর্ববর্তী নিবন্ধের সাথে সাম্প্রতিক ফোরোনিক্স নিবন্ধটি দেওয়া হয়েছে । মানদণ্ডের উপর নির্ভর করে, বিজয়ী হয় হয় এক বা অন্যটি (পূর্ববর্তী নিবন্ধে, জিসিসি 4.7 খুব উপস্থিত হয়), তাই আমি ব্যক্তিগতভাবে এটি অস্পষ্ট দেখতে পাচ্ছি যা আরও ভাল ফলাফল করছে।
ম্যাথিউ এম।

দুটোই ব্যবহার করবেন না কেন? উন্নয়নের জন্য বাজে, এবং উত্পাদনের জন্য জিসিসি।
সেগফাল্ট

5
@ সেগফোল্ট: আমি বর্তমানে এটিই করছি। এই উত্তরটি বেশ পুরানো, এবং এটি আর পুরোপুরি সত্য নয়। আমি এটি লেখার পর থেকে ক্ল্যাং এবং জিসিসি উভয়ই যথেষ্ট উন্নতি করেছে (বিশেষত, ক্ল্যাং এখন জিসিসির সামগ্রিক সি ++ 11 সাপোর্টের সাথে মেলে এবং জিসিসি এর ত্রুটি বার্তা এবং সংকলনের গতি উন্নত করেছে)। এখন আমি উভয়কেই ক্ল্যাংয়ের দিকে সামান্য পছন্দ সহকারে ব্যবহার করার পরামর্শ দেব কারণ জিসিসি উত্সের চেয়ে ক্ল্যাং সোর্স কোডটি বোঝা অনেক সহজ।
মনকারসে

23

আমি উভয়ই ব্যবহার করি কারণ কখনও কখনও তারা বিভিন্ন, দরকারী ত্রুটি বার্তা দেয়।

পাইথন প্রকল্পটি যখন কোনও মূল বিকাশকারী প্রথমে ঝনঝন দিয়ে সংকলন করার চেষ্টা করেছিল তখন বেশ কয়েকটি ছোট ছোট বুগলেটগুলি সন্ধান করতে এবং ঠিক করতে সক্ষম হয়েছিল।


1
ডিবাগ বিল্ডগুলির জন্য ঝাঁকুনি ব্যবহার করার বিষয়ে আপনার কী ধারণা রয়েছে তবে অনুকূলিতকরণের জন্য জিসিসি?
অলিকাল

5
ঝাঁকুনির সাথে বিকাশ করা এবং জিসিসির সাথে মুক্তি দেওয়া যুক্তিসঙ্গত, তবে নিশ্চিত হয়ে নিন যে আপনার জিসিসির প্রকাশটি আপনার পরীক্ষার স্যুটটি (এনডিইবিউজি এবং এর বাইরে উভয়ই) পাস করেছে।
রেমন্ড হেটেঙ্গার

2
উত্তরের জন্য ধন্যবাদ. আমি এটি কিছুটা চেষ্টা করে দেখছি এবং এটি সত্যিই ভালভাবে কাজ করে। আমি সতর্কতার বিভিন্ন সেটও পাই, এটি দুর্দান্ত।
অলিকাল

11

আমি ক্ল্যাং এবং জিসিসি উভয়ই ব্যবহার করি, আমি দেখতে পাই যে ক্ল্যাংয়ের কিছু দরকারী সতর্কতা রয়েছে তবে আমার নিজের রশ্মি সনাক্তকরণের মানদণ্ডগুলির জন্য - এটি ধারাবাহিকভাবে 5-15% ধীরে ধীরে পরে জিসিসি (অবশ্যই লবণের দানার সাথে এটি নিন, তবে অনুরূপ অপ্টিমাইজেশন পতাকা ব্যবহার করার চেষ্টা করেছিলেন) উভয় জন্য).

তাই আপাতত আমি জটিল ম্যাক্রোগুলির সাথে ক্ল্যাং স্ট্যাটিক বিশ্লেষণ এবং এর সতর্কতাগুলি ব্যবহার করি: (যদিও বর্তমানে জিসিসির সতর্কতাগুলি বেশ ভাল - জিসিসি 4.8 - 4.9)।

কিছু বিবেচনা:

  • কলংয়ের কোনও ওপেনএমপি সমর্থন নেই, কেবলমাত্র আপনি যদি সেটির সুবিধা নেন তবে তা গুরুত্বপূর্ণ কারণ এটি আমার পক্ষে সীমাবদ্ধ। (*****)
  • ক্রস সংকলন ততটা সমর্থনযোগ্য নাও হতে পারে (ফ্রিবিএসডি 10 উদাহরণস্বরূপ এখনও এআরএম এর জন্য জিসিসি 4.এক্স ব্যবহার করুন), জিসিসি-মিংডউ লিনাক্সে উপলভ্য ... (ওয়াইএমএমভি)।
  • কিছু আইডিই এখনও কলংস আউটপুট পার্সিং সমর্থন করে না ( উদাহরণস্বরূপ কিউটিক্রিটার *****)। সম্পাদনা: কিউটিক্রিটর এখন ক্ল্যাংয়ের আউটপুট সমর্থন করে
  • জিসিসির কিছু দিকগুলি আরও ভালভাবে নথিভুক্ত করা হয়েছে এবং যেহেতু জিসিসি দীর্ঘকাল ধরে রয়েছে এবং এটি ব্যাপকভাবে ব্যবহৃত হয়, তাই আপনি সতর্কতা / ত্রুটি বার্তাগুলির সাহায্য পেতে আরও সহজ পেতে পারেন।

***** - এই অঞ্চলগুলি সক্রিয় বিকাশে রয়েছে এবং শীঘ্রই সমর্থন করা যেতে পারে


আমি ওপেনএমপিও ব্যবহার করি তবে আমি টিবিবিতে স্যুইচ করার কথা ভাবছি যা আমার ধারণা কলংয়ের সাথে কাজ করবে।

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

7

শিক্ষার্থী স্তরের প্রোগ্রামগুলির জন্য, ক্ল্যাংয়ের সুবিধাটি এটি হ'ল ডিফল্টরূপে, কঠোর আর্ট। সি স্ট্যান্ডার্ড। উদাহরণস্বরূপ, হ্যালো ওয়ার্ল্ডের নিম্নলিখিত কেএন্ডআর সংস্করণটি জিসিসির দ্বারা সতর্কতা ছাড়াই গ্রহণ করা হয়েছে, তবে কিছু চমত্কার বর্ণনামূলক ত্রুটি বার্তাগুলির সাহায্যে ক্ল্যাং দ্বারা প্রত্যাখ্যান করা হয়েছে:

main()
{
    puts("Hello, world!");
}

জিসিসির সাথে, আপনাকে এটি -Werrorবৈধ C89 প্রোগ্রাম না হওয়ার বিষয়ে সত্যিকার অর্থে একটি বিষয়টি জানাতে হবে। এছাড়াও, আপনার এখনও সি 99 ভাষা ব্যবহার করতে হবে c99বা gcc -std=c99পেতে হবে।


8
gccসাধারণত কমপক্ষে -Wall, যা এই প্রোগ্রামটির জন্য সতর্ক করে না তা দিয়ে আমন্ত্রণ জানানো উচিত । clangযদিও ভাল সতর্কতা / ত্রুটি তৈরি করে।
ক্যাফে

2
@ কেএফ: আমি ঠিক যে পয়েন্টটি তৈরির চেষ্টা করছি তা জিসিসির মাধ্যমে আপনাকে এটি বিকল্পগুলি পাস করতে হবে। বাক্সের বাইরে, এটি শেখানোর উদ্দেশ্যে খুব সহনশীল হতে পারে।
ফ্রেড ফু

এটি সত্য হতে পারে তবে এটি মোটামুটি ছোটখাটো বিষয়। এর চেয়ে গুরুত্বপূর্ণটি হচ্ছে ত্রুটি বার্তাগুলির মান । জিসিসি 4.6 বেশ ভাল পেয়েছে, যদিও আমি বুঝতে পারি যে ঝাঁকুনি সেখানে কিছু সত্যিকারের যাদু করছে।
কেরেক এসবি

2
@ ড্রিমলাক্স: সত্য; এছাড়াও আছে gnu99, gnu++98এবং gnu++0x। আমি মনে করি সেগুলি প্রকৃত এক্সটেনশন , যদিও, অর্থাত তারা কোনও বাধা ছাড়াই আইএসও-স্ট্যান্ডার্ড কোডটি মেনে চলবে। এখানে বিস্তারিত: সি জন্য , সি জন্য ++,
কেরেক এসবি

1
এই প্রোগ্রামটিতে ত্রুটি বা সতর্কতা তৈরি করা উচিত নয়। এটি মান অনুসারে।
মাইলস রাউট

3

আমি মনে করি ঝাঁকুনির বিকল্প হতে পারে।

জিসিসি এবং ক্ল্যাংয়ের মত প্রকাশের সাথে কিছুটা পার্থক্য রয়েছে a+++++aএবং আমি আমার স্নিগ্ধর সাথে অনেকগুলি উত্তর পেয়েছি যারা আমি জিসিসি ব্যবহার করার সময় ম্যাকের উপর ঝাঁকুনি ব্যবহার করে।

জিসিসি স্ট্যান্ডার্ডে পরিণত হয়েছে এবং ঝনঝন একটি বিকল্প হতে পারে। কারণ জিসিসি খুব স্থিতিশীল এবং ঝনঝন এখনও বিকাশের অধীনে।


5
ক্ল্যাং দ্রুত লিনাক্স বিশ্বে জিসিসি সম্পূর্ণরূপে প্রতিস্থাপনের জন্য প্রস্তুতি নিচ্ছে এবং বিএসডি বিশ্বে এটি বেশিরভাগ ক্ষেত্রে করেছে। এটি বহু বছর আগে ম্যাকের উপর জিসিসি প্রতিস্থাপন করেছে। ঝনঝনানি ভাল জিনিস। আমি মনে করি, জিসিসি ব্যক্তিগতভাবে বিকল্প হতে পারে এবং আমি সে সম্পর্কে খুশি হব।
কোডার 543

5
A +++++ a এক্সপ্রেশনটি অপরিজ্ঞাত তাই প্রতিটি সংকলক, এমনকি একই সংকলকটির বিভিন্ন সংস্করণেও আলাদা উত্তর পাওয়ার আশা করে। এমনকি আপনি বিভিন্ন সময়ে সংকলিত হয়ে একই সংকলকটিতে সেই অভিব্যক্তিটির জন্য আলাদা আলাদা ফলাফল পেতে পারেন। "অপরিজ্ঞাত" এর অর্থ এটি।
লেলানথ্রান

1
a+++++aএটি a ++ ++ + aএকটি সিনট্যাক্স ত্রুটি হিসাবে পার্স করা হিসাবে ব্যর্থ হওয়া উচিত ।
মাইলস রাউট

@ লেলানথ্রান এটি অপরিজ্ঞাত মানে not এটি সংজ্ঞায়িত আচরণ করেছে যাতে সংকলক এটি সংকলন করতে ব্যর্থ হতে পারে, বা এটি রানটাইমের সময় নিক্ষেপ করতে পারে বা সিপিইউ লক করতে পারে যাতে আপনার হার্ড রিসেট বা আরও কিছু খারাপ কাজ করার দরকার হয়।
অ্যান্টি হাপাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.