সি, সি 99, এএনএসআই সি এবং জিএনইউ সি এর মধ্যে পার্থক্য কী?


122

আমি কোডেফের উপর প্রোগ্রামিং অনুশীলন শুরু করেছি এবং সি এবং সি 99 এর মধ্যে পার্থক্য দেখে বিভ্রান্ত হয়েছি সি এখানে অর্থ কি? এটা কি C89? এই জমা দেওয়ার নীচে ভাষাগুলি পরীক্ষা করুন । এতে সি এবং সি 99 উভয়ই রয়েছে।

আমি ইন্টারনেটে জিএনইউ সি নামক কিছু পেয়েছি যা লিনাক্স / ইউনিক্স সিস্টেমের জন্য আলাদা সি আছে? এগুলি কি এএনএসআইয়ের সি মানদণ্ডের সাথে অনুগত? আমি কিছু জায়গায় "C99 কঠোর" পড়েছি। এটা কি?

সি ব্যবহারের জন্য অন্য কোন বিভিন্ন মান আছে? সি ৪.৩.২ নামে কিছু আছে কি এটি বর্তমান ব্যবহারের ক্ষেত্রে জিসিসি সংস্করণ?

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

এটি , এটি , এটি সাহায্য করেছিল। আমি আরও অনুসন্ধান করব এবং উত্তরগুলি উত্তর না দেওয়া জিনিসগুলি সম্পাদনা করব।

আমি প্রোগ্রামিং নবাগত নই। আমি জানি সি ভাষা কী। আমি জানি যে এএনএসআই দ্বারা সি 98, সি 99 এবং সি 11 এর মতো বিভিন্ন সি স্ট্যান্ডার্ড রয়েছে।


@ আমি খুব বেশি অনুসন্ধান করতাম না। আমি এখন করেছি। আমি আরও করব। এবং প্রশ্নটি আরও সম্পাদনা করুন।
অসীম বানসাল

@ তবে আমি সি 99 এর সম্পর্কে কঠোরভাবে খুঁজে পেতে সক্ষম হইনি এবং কোডেফের সি সি 98 বা পূর্ববর্তী মানহীন মূল সি কিনা
অসীম বানসাল

1
সম্পর্কে ভুলবেন না POSIX সি :-)
PMG

উত্তর:


216
  • মানককরণের আগে প্রতিটি কিছুর নাম লেখক হিসাবে সি ভাষার আবিষ্কারক ডেনিস রিচি সহ বিখ্যাত বইয়ের পরে সাধারণত "কে অ্যান্ডআর সি" বলা হয় । এটি 1972-1989 থেকে "সি ভাষা" ছিল।

  • প্রথম সি স্ট্যান্ডার্ড 1989 সালে তাদের জাতীয় মানক প্রতিষ্ঠান এএনএসআই দ্বারা জাতীয়ভাবে মুক্তি পেয়েছিল। এই প্রকাশকে সি 89 বা এএনএসআই-সি বলা হয়। 1989-1990 পর্যন্ত এটি ছিল "সি ভাষা"।

  • পরের বছর, আমেরিকান স্ট্যান্ডার্ড আন্তর্জাতিকভাবে গৃহীত হয়েছিল এবং আইএসও দ্বারা প্রকাশিত হয়েছিল (আইএসও 9899: 1990)। এই প্রকাশকে সি 90 বলে। প্রযুক্তিগতভাবে, এটি সি 98 / এএনএসআই-সি এর সমান স্ট্যান্ডার্ড। আনুষ্ঠানিকভাবে, এটি সি 98 / এএনএসআই-সি প্রতিস্থাপন করেছে, এগুলি অচল করে দিয়েছে। 1990-1999, C90 ছিল "সি ভাষা"।

    দয়া করে নোট করুন যে 1989 সাল থেকে, এএনএসআই এর সি ভাষার সাথে কিছু করার ছিল না। প্রোগ্রামাররা এখনও "এএনএসআই সি" সম্পর্কে কথা বলতে সাধারণত এর অর্থ কী তা সম্পর্কে কোনও ধারণা পায়নি। আইএসও স্ট্যান্ডার্ড আইএসও 9899 এর মাধ্যমে সি ভাষার "মালিকানাধীন"।

  • একটি সামান্য আপডেট 1995 সালে প্রকাশিত হয়েছিল, কখনও কখনও "C95" হিসাবে পরিচিত। এটি কোনও বড় সংশোধন নয়, বরং আইএসও / আইসিসি 9899: 1990 / এএমডি 1: 1995 নামক একটি প্রযুক্তিগত সংশোধনী ছিল formal মূল পরিবর্তনটি ছিল প্রশস্ত চরিত্রের সহায়তার পরিচয়।

  • 1999 সালে, সি স্ট্যান্ডার্ডটি একটি বড় সংশোধনী (আইএসও 9899: 1999) দিয়েছিল। মানকটির এই সংস্করণটিকে C99 বলা হয়। 1999-2011 থেকে এটি ছিল "সি ভাষা"।

  • ২০১১ সালে, সি স্ট্যান্ডার্ডটি আবার পরিবর্তন করা হয়েছিল (আইএসও 9899: 2011)। এই সংস্করণটিকে সি 11 বলা হয়। বিভিন্ন নতুন বৈশিষ্ট্য যেমন _Generic, _Static_assertএবং থ্রেড সমর্থন ভাষায় যুক্ত করা হয়েছিল। আপডেটটি মাল্টি-কোর, মাল্টি-প্রসেসিং এবং এক্সপ্রেশন সিকোয়েন্সিংয়ে ফোকাস নিয়েছিল had 2011-2017 থেকে এটি ছিল "সি ভাষা"।

  • 2017 সালে, সি 11 সংশোধিত হয়েছিল এবং বিভিন্ন ত্রুটিযুক্ত প্রতিবেদনগুলি সমাধান করা হয়েছিল। এই স্ট্যান্ডার্ডটিকে অনানুষ্ঠানিকভাবে সি 17 বলা হয় এবং আইএসও 9899: 2018 হিসাবে প্রকাশিত হয়েছিল। এটিতে কোনও নতুন বৈশিষ্ট্য নেই, কেবল সংশোধন রয়েছে। এটি সি ভাষার বর্তমান সংস্করণ।


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

"জিএনইউ সি" বলতে দুটি জিনিস বোঝাতে পারে। হয় সিএন সংকলক নিজেই জিএনইউ সংকলক সংগ্রহের (জিসিসি) অংশ হিসাবে আসে। বা এর অর্থ এটি হতে পারে যে জিসিসি সি সংকলকটি ব্যবহার করে এমন অ-মানক ডিফল্ট সেটআপ। আপনি যদি সংকলন করেন gcc program.cতবে আপনি সি স্ট্যান্ডার্ড অনুযায়ী সংকলন করবেন না, বরং একটি মানহীন জিএনইউ সেটআপ, যা "জিএনইউ সি" হিসাবে উল্লেখ করা যেতে পারে। উদাহরণস্বরূপ, পুরো লিনাক্স কার্নেলটি স্ট্যান্ডার্ড সি-তে নয়, মানহীন জিএনইউ সি-তে তৈরি and

আপনি যদি সি প্রোগ্রাম অনুযায়ী আপনার প্রোগ্রামগুলি সংকলন করতে চান তবে আপনার টাইপ করা উচিত gcc -std=c99 -pedantic-errors। আপনার জিসিসি সংস্করণ যদি সমর্থন করে তবে সি 99-কে সি 11 এর সাথে প্রতিস্থাপন করুন।


8
কঠোর সংকলক সেটিংটির অর্থ হতে পারে "এক্সটেনশনগুলি অক্ষম করুন; কেবলমাত্র স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত সি ভাষা ব্যবহার করুন পাশাপাশি এর চেয়ে আরও বেশি, "সঠিকভাবে সংকলন করুন"। ভাষায় এক্সটেনশনগুলি গ্রহণ করা সম্পূর্ণ সঠিক; মানটি এটির জন্য সংজ্ঞায়িত করা হয়েছিল।
এরিক পোস্টপিসিল

5
এছাড়াও সি94 / সি 95 সংশোধনী 1 ছিল যা মূলত মূলত আরও প্রশস্ত চরিত্র সমর্থন যোগ করে। সি এবং সি ++ এ স্ট্যান্ডার্ড শিরোনাম ফাইলগুলির তালিকাও দেখুন ।
জোনাথন লেফলার

2
আপনি লিখেছেন যে প্রচুর জিনিস C90 থেকে C99 এ পরিবর্তিত হয়েছে। আপনি দয়া করে কিছু নাম দিতে পারেন?
মার্টিন থোমা

3
@ লন্ডিন আপনি কে ও আর এর জন্য ভুল বইটি যুক্ত করেছেন; এটি দ্বিতীয় সংস্করণ যা সি 98 স্ট্যান্ডার্ডকে বর্ণনা করে।
অ্যান্টি হাপালা

5
হ্যাঁ, তবে বিষয়টি হ'ল এটি সেই সংস্করণ নয় যা সি প্রোগ্রামিংয়ের ভাষাটিকে বিন্দু পর্যন্ত সংজ্ঞায়িত করেছে; এটি যে কোথাও বিক্রয় হবে না।
আন্তি হাপালা

7

আমি অবশ্যই এএনএসআই সি সম্পর্কিত প্রতিক্রিয়া জানাতে চাই যদিও এএনএসআই এটি দিয়ে কিছু করেনি, সংকলকগুলি এখনও এটির জন্য নির্মিত। উদাহরণস্বরূপ পিআইসি এক্সসি 16 সংকলক: "সংকলকটি সম্পূর্ণরূপে বৈধতাযুক্ত সংকলক যা এএনএসআই সি মানদণ্ডের সাথে অনুসারে এএনএসআই স্পেসিফিকেশন (এএনএসআই x3.159-1989) দ্বারা বর্ণিত এবং কর্নিগান এবং রিচির সি প্রোগ্রামিং ল্যাঙ্গুয়েজে (দ্বিতীয় সংস্করণ) বর্ণিত। ... "সমস্ত প্রোগ্রামিং পিসির মতো" বড় "কম্পিউটারের জন্য নয়। আপনার ডিভাইসের ব্যয়ের জন্য একটি সংকলক লেখার জন্য এবং সময় ও costs এর মূল্যায়ন করা হচ্ছে $ এএনএসআই সি জীবিত এবং ভাল এবং আপনার এম্বেড করা / রিয়েল-টাইম ডিভাইসে বাস করছে living


4
  • এএনএসআই সি: প্রথম সি ভাষাটি 1989 সালে এএনএসআই নামে বডি দ্বারা প্রমিত করা হয়েছিল, এজন্য এটিকে c89 বলা হয়।

  • সি 99:
    বিকাশকারীদের প্রয়োজনীয়তাগুলির সাথে চাহিদা অনুসারে, 1999-2000 এ আরও বা অতিরিক্ত কীওয়ার্ড এবং বৈশিষ্ট্যগুলি C99 এ অন্তর্ভুক্ত করা হয়েছে (উদা: ইনলাইন, বুলিয়ান .. সংযুক্ত ফ্লোটিং পয়েন্ট আর্টেম্যাটিক লাইব্রেরি ফাংশন)

  • জিএনইউ সি: জিএনইউ অপারেটিং সিস্টেমের মতো একটি ইউনিক্স (www.gnu.org) এবং কোথাও জিএনইউর প্রকল্পের এএনএসআই সি স্ট্যান্ডার্ডের ভিত্তিতে সি প্রোগ্রামিং ভাষা প্রয়োজন। কোডটি সংকলনের জন্য জিএনইউ জিসিসি (জিএনইউ সংকলক সংগ্রহ) সংকলকটি ব্যবহার করে। এটিতে সি লাইব্রেরির ফাংশন রয়েছে যা সিস্টেম কলগুলি যেমন মলোক, কলোক, প্রস্থান ... ইত্যাদি সংজ্ঞায়িত করে

এএনএসআই সি একটি স্ট্যান্ডার্ড যা অন্যান্য মান ব্যবহার করে বা রেফার করে ed


সি 99 সম্পর্কে কঠোর এবং কোডেফের সিটি C89 বা পূর্বের অ-মানকৃত মূল সি কিনা
আসিম বানসাল

সংশোধন: এএনএসআই সি একটি অপ্রচলিত মান, যা কেবলমাত্র পুরানো নথি দ্বারা উল্লেখ করা হয়। সি ভাষাটিকে আইএসও সি বলা হয়, বা আপনি আইএসও / আইইসি 9899: 2011 করবেন।
লন্ডিন

1

লন্ডিনের সাথে যুক্ত উত্তর

এখানে কি ডেনিস রিচি হতে হয় বলুন যখন জিজ্ঞাসা করা

"কেএন্ডআর দ্বিতীয় সংস্করণ লেখার আগে কেন কেআরআর চূড়ান্ত, অনুমোদিত এএনএসআই মানকটির জন্য অপেক্ষা করল না?"

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

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

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

ডেনিস রিচি


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

@ সুপের্যাট আমি আসলে বুঝতে পারি নি যে এলিয়াসিংয়ের নিয়ম মানে কী আপনি আমাকে সাহায্য করতে পারেন?
সুরজ জৈন

1
মূল ধারণাটি ছিল যে int i; int test(double *p) { i=1; *p=2.0; return i; }একটি সংকলকের মতো প্রদত্ত কোডটির ঠিকানাটি আটকে থাকতে পারে এমন অফ অফ সুযোগে iলেখার পরে পুনরায় লোড করার প্রয়োজন হবে না । একেবারে যুক্তিযুক্ত। সমস্যাটি হ'ল আধুনিক সংকলকরা অনুমানগুলি ন্যায্যতা হিসাবে একই নিয়ম ব্যবহার করে যা একটি লিখেন যা একটি প্রভাবিত করে না , এমনকি উভয় ধরণের একই আকার এবং উপস্থাপনা থাকে এবং এমনকি যদি দুটি কাঠামো একটি সাধারণ প্রাথমিক ক্রম ভাগ করে দেয় তবে কোড কখনই ব্যবহার করবে না সিআইএস সদস্যকে অন্যের মাধ্যমে লেখা পড়ার জন্য এক ধরণের পয়েন্টার। *ppilong*long long
সুপারক্যাট

-2

এই প্রশ্নের উত্তরের জন্য নেটটিতে পুঙ্খানুপুঙ্খভাবে অনুসন্ধান করা হয়নি, যাইহোক আপনি এটিকে দেখতে পারেন:

  1. সি একটি সাধারণ উদ্দেশ্যমূলক প্রোগ্রামিং ভাষা যা ডেনিস রিচি ১৯ 19৯ এবং ১৯69৩ সালের মধ্যে এটিএন্ডটি বেল ল্যাবগুলিতে শুরু করেছিলেন।
  2. সি 99 হ'ল সি এস ভাষার একটি মান যা আইএসও দ্বারা প্রকাশিত হয়েছিল এবং 1999 সালে এএনএসআই দ্বারা গৃহীত হয়েছিল।
  3. জিএনইউ সি কেবলমাত্র সি 89 এর একটি এক্সটেনশান, যখন সি 99 এর কয়েকটি বৈশিষ্ট্যও যুক্ত করা হয়েছে, তবে সামগ্রিকভাবে এটি সি 99 স্ট্যান্ডার্ড থেকে আলাদা তাই যখন সিসিপি সংকলন করা হয় তখন আমাদের প্রবেশ করতে হবে -std=c99যা ইতিমধ্যে অন্যান্য উত্তরে উল্লিখিত রয়েছে।
  4. এএনএসআই সি এএনএসআই কর্তৃক প্রকাশিত মানের ধারাবাহিক ধারা।

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

C99 সম্পর্কে কঠোর এবং কোডেফের সিটি C89 বা পূর্বের অ-মানকৃত মূল সি-তে কিছু হোক
আসিম বানসাল

4
এই উত্তরে অনেক ত্রুটি রয়েছে। C99 1999 এর কাছাকাছি আইএসও দ্বারা সংজ্ঞায়িত একটি স্ট্যান্ডার্ড language সি ভাষাটি 23 বছর ধরে আন্তর্জাতিকভাবে মানিক করা হয়েছে। সুতরাং এএনএসআইয়ের সাথে এর কোনও সম্পর্ক নেই , 24 বছরের মধ্যে তারা কোনও সি মানের স্পর্শ করতে পারেনি। আজকাল তারা আমেরিকান বাজারের জন্য কেবল আইএসও মান প্রিন্ট করে এবং বিতরণ করে।
লন্ডিন

@ লন্ডিন ওহ !! হ্যাঁ, আসলে আমি "সংজ্ঞায়িত" লিখেছিলাম যা এটি নয়, এটি সেখানে "গৃহীত" হওয়া উচিত the আইএসও দ্বারা প্রকাশিত হয়েছিল এবং এএনএসআই দ্বারা গৃহীত হয়েছিল, এবং উত্তরটি জিজ্ঞাসা করা হিসাবে সংক্ষিপ্ত, সুতরাং আমি উত্তরটি সংক্ষিপ্ত রেখে কয়েকটি বিষয় উল্লেখ করেছি।
ডিসেম্বর 0

1
লক্ষ্য করুন gccসমর্থন -std=c89এবং -std=gnu89এবং -std=c99এবং -std=gnu99(এবং যথেষ্ট আধুনিক সংস্করণ সমর্থন -std=c11এবং -std=gnu11)। পার্থক্য স্ট্যান্ডার্ড সি প্রাপ্তিসাধ্য হচ্ছে স্বয়ংক্রিয়ভাবে অথবা শুধুমাত্র যখন উৎস সেগুলি সম্পর্কে সঠিক ম্যাক্রো (যেমন সঙ্গে তাদের প্রদানের মধ্যে কম্পাইলার prods উপর এক্সটেনশনগুলি সহ করতে হয় -D_XOPEN_SOURCE=700)।
জোনাথন লেফলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.