কেন একটি সরল "হ্যালো ওয়ার্ল্ড"-স্টাইল প্রোগ্রামটি টার্বো সি ++ এর সাথে সংকলন করে না?


101

আমি আমার প্রোগ্রামিং ক্লাসের জন্য সি ++ শিখতে শুরু করেছি। আমি এই "হ্যালো ওয়ার্ল্ড" প্রোগ্রামটি ডাউনলোড করেছি:

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

তবে টার্বো সি ++ অভিযোগ করেছে:

Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM'
Error D:\HELLO.CPP 2: Declaration syntax error
Error D:\HELLO.CPP 6: Undefined symbol 'cout'

এই খুব সাধারণ প্রোগ্রামে কী ভুল? আমি কীভাবে এই ত্রুটিগুলি সংশোধন করতে পারি?


39
এটি টার্বো সি ++ সমস্যা সম্পর্কে জিজ্ঞাসা করা প্রশ্নগুলির জন্য একটি স্ট্যান্ডার্ড ডুপ পুনর্নির্দেশের উদ্দেশ্য। এই প্রশ্নগুলির মধ্যে অনেকেরই মন্তব্যগুলিতে কেবল একটি সংক্ষিপ্ত ব্যাখ্যা দিয়ে দ্রুত গুলি করা হবে, যদিও তারা সত্যই সঠিক উত্তর ব্যবহার করতে পারে। উন্নতি স্বাগত জানায়।
এন। 'সর্বনাম' মি।

6
আপনি যে টার্বো সি ++ প্রকাশ করছেন তা উল্লেখ করার পরামর্শ দিন। 2006 সংস্করণটি এই প্রোগ্রামটির সাথে মোকাবিলা করেছে।
এমএম

5
"আমি আমার প্রোগ্রামিং ক্লাসের জন্য সি ++ শিখতে শুরু করেছি।" এটি একটি মিথ্যা. সময়কাল।
bugwheels94


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

উত্তর:


158

এই প্রোগ্রামটিতে কোনও সমস্যা নেই। (সম্ভবত কিছু শৈলীগত সমস্যা বাদে - using namespace stdসুপারিশ করা হয় না)। সমস্যাটি টার্বো সি ++ এর সাথে। এটি সফ্টওয়্যারটির একটি খুব পুরানো অংশ। এটি সি ++ এর একটি উপভাষা প্রয়োগ করে, তথাকথিত প্রাক-এএনএসআই সি ++ এর ডায়ালেক্ট কার্যকর করে যা এই সহস্রাব্দের শুরুতে পুরোপুরি ব্যবহারের বাইরে চলে গেছে। সি ++ এর জন্য প্রথম এএনএসআই মান 1998 সালে প্রকাশিত হয়েছিল, তারপরে 2003 সংস্করণ, 2011 সংস্করণ, 2014 সংস্করণ, 2017 সংস্করণ ছিল এবং এখন আমরা আশা করি 2020 সংস্করণটি আনুষ্ঠানিকভাবে প্রকাশিত হবে। এই প্রতিটি স্ট্যান্ডার্ড সংশোধন ভাষাতে কমবেশি উল্লেখযোগ্য পরিবর্তন এনেছে।

টার্বো সি ++ এর জন্য আপনাকে এইভাবে প্রোগ্রামটি পরিবর্তন করতে হবে:

#include <iostream.h>      // note the .h suffix
// using namespace std;    // Turbo C++ doesn't implement namespaces

int main() 
{
    cout << "Hello, World!";
    return 0;
}

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

আপনি যদি টার্বো সি ++ ব্যবহার করে প্রোগ্রামিং শিখতে পারেন তবে নীচের সমস্যার কারণে যদি মানবিকভাবে সম্ভব হয় তবে তা এড়াতে আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি:

  1. আপনি এমন একটি ভাষা শিখবেন যা শিল্পে ব্যবহৃত একটি জনপ্রিয় ভাষার সাথে কিছুটা মিল, তবে কোনও কারণ নেই বলেই এটি খুব আলাদা। আপনি যদি সত্যিকারের সফ্টওয়্যার বিকাশের জন্য সি ++ লেখার পরিকল্পনা করেন তবে আপনাকে অনেক কিছু শিখতে হবে। এখনই আধুনিক সি ++ শেখা অনেক সহজ।
  2. টার্বো সি ++ সম্পর্কে কোনও বিদ্যমান সাহিত্য নেই। ইন্টারনেটে বা বইগুলিতে আপনি প্রায় 100% সি ++ উপাদান পাবেন যা বাক্সের বাইরে টার্বো সি ++ এ সরাসরি প্রযোজ্য নয়। কারও কারও কাছে কেবলমাত্র সামান্য অভিযোজন প্রয়োজন হবে, অন্য উপাদানগুলি সম্পূর্ণ ব্যবহারযোগ্য নয়। আপনার কাছে অবিলম্বে উপলব্ধ সাহায্যের একমাত্র উত্স হ'ল বিল্ট-ইন টার্বো সি ++ সহায়তা।
  3. খুব কম লোক টার্বো সি ++ মনে রাখে। ফোরামে প্রশ্ন জিজ্ঞাসা করার সময়, সর্বদা নির্ধারণ করুন যে আপনি ভাষার আধুনিক সংস্করণটির প্রতি লক্ষ্য রেখে প্রতিক্রিয়াগুলি ছাঁটাতে একটি প্রাক-এএনএসআই উপভাষা ব্যবহার করছেন। আপনি অবিলম্বে থামতে এবং আপনার জিজ্ঞাসা প্রতিটি প্রশ্নের সাথে একটি আধুনিক সংকলক স্যুইচ করার পরামর্শ দিয়ে আপনি সম্ভবত বেশ কিছু মন্তব্য পেয়ে যাবেন।

আপনি টার্বো সি ++ এর জায়গায় ব্যবহার করতে পারেন এমন অনেক আধুনিক বিনামূল্যে ( বিয়ারের পাশাপাশি স্পিচ হিসাবে ) সংকলক এবং আইডিই রয়েছে। এর মধ্যে কয়েকটি অন্তর্ভুক্ত:

  1. ভিজ্যুয়াল সি ++ সম্প্রদায় সংস্করণ একটি আইডিই এবং মাইক্রোসফ্ট থেকে সংকলক
  2. কোড :: ব্লকগুলি একটি হালকা আইডিই। উইন্ডোজ এ এটি কিছুটা পুরানো সংকলক সহ প্রেরণ করে তবে আপনি নিজে আরও আধুনিক সংকলক ইনস্টল করতে পারেন
  3. Eclipse CDT একটি শক্তিশালী ক্রস প্ল্যাটফর্ম আইডিই। এটি নিজস্ব সংকলক সহ প্রেরণ করে না তাই আপনাকে পৃথক সংকলক ইনস্টল করতে হবে। উইন্ডোজে, উদাহরণস্বরূপ MinGW ব্যবহার করুন ।
  4. আরো অনেক
  5. এছাড়াও, অনেকগুলি অনলাইন সংকলক যেমন http://ideone.com , https://www.onlinegdb.com/ এবং http://coliru.stacked-crooked.com , এবং আরও অনেকগুলি রয়েছে (এগুলি বেশিরভাগই ভাল আইডিয়া চেষ্টা করে দেখতে এবং খুব ছোট প্রোগ্রাম লেখার জন্য)।
  6. উভয় ঝনঝন / LLVM এবং জিসিসি হয় মুক্ত সফটওয়্যার সি ++ সাম্প্রতিক সংস্করণ সমর্থন কম্পাইলার।

আফসোস, কিছু স্কুল / শিক্ষকরা এই দিন এবং যুগে এমনকি শিক্ষার্থীদের টার্বো সি ++ ব্যবহার করতে বাধ্য করে appear দুর্ভাগ্যক্রমে এটি এই সম্প্রদায়টি ঠিক করতে পারে এমন কিছু নয়। আপনি যদি এই পরিস্থিতিতে নিজেকে খুঁজে পান তবে খুব বেশি বাহিরের সহায়তা না পেতে প্রস্তুত হন prepare


7
@ রেকেট 1111 আমি মনে করি এটি "এই প্রোগ্রামটিতে বর্তমান মান অনুযায়ী কোনও সমস্যা নেই of" অর্থে এটি আরও বেশি। এটি ভাল প্রোগ্রামিং শৈলী অন্য জিনিস কিনা।
সোমব্রেরো চিকেন

21
@ Rakete1111 এর দায়বদ্ধ ব্যবহারে কোনও ভুল নেই using namespace std। এটি নতুন প্রোগ্রামারগুলিকে শেখানোর পক্ষে একটি ভাল শিক্ষাগত সিদ্ধান্ত হতে পারে বা নাও হতে পারে, তবে এটি প্রতি নৈতিকভাবে ভুল নয়।
এন। 'সর্বনাম' মি।

10
আমি সম্মতি জানাই এটি using namespace stdখারাপ অনুশীলন, তবে আমি মনে করি এটি এই প্রশ্নের অন্তর্ভুক্ত, কারণ আপনি অনলাইনে খুঁজে পাওয়া সি ++ হ্যালো ওয়ার্ল্ড প্রোগ্রামগুলি প্রায়শই এটি করে। সুতরাং এটি পরিষ্কার হওয়া জরুরী যে এটি টার্বো সি ++ অসন্তুষ্ট করে তোলে না। সম্ভবত "এই প্রোগ্রামটিতে কোনও সমস্যা নেই" এর পরিবর্তে বলুন " বর্তমান সি ++ স্ট্যান্ডার্ড অনুযায়ী এই প্রোগ্রামটি বৈধ, এটি সংকলন করা উচিত।"
zwol

5
@ একই টোকেন দ্বারা পপি, স্ট্যান্ডার্ড ফাংশনগুলিতে সমস্ত কল দায়িত্বজ্ঞানহীন, কারণ আপনি জানেন না যে নতুন ওভারলোডগুলি কী যুক্ত হবে। পরবর্তী মানক বা পরিবর্তনের অর্থ থেকে কী ভাষা বৈশিষ্ট্যগুলি অদৃশ্য হয়ে যাবে তা আপনি জানেন না। সমস্ত প্রোগ্রাম কয়েক দশক ধরে বেঁচে থাকার বা স্বেচ্ছাসেবী সংকলকগুলিতে পোর্টেবল হওয়ার দরকার নেই।
এন। 'সর্বনাম' মি।

6
"খুব কম লোক টার্বো সি ++ এর কথা মনে রাখে" আমি তাতে একমত নই। কমপক্ষে একটি সম্পূর্ণ, বৃহত্তর দেশ আজ সক্রিয়ভাবে এটি শেখানো হচ্ছে ।
অরবিটে

11

"টার্বো সি ++" এর অর্থ অসংখ্য সংকলক হতে পারে। এই প্রশ্নটি জিজ্ঞাসা করার সময়, সংস্করণ নম্বরটি অন্তর্ভুক্ত করা জরুরী।

  • বোরল্যান্ড টার্বো সি ++ সংস্করণ 3.1 পর্যন্ত ক্লাসিক ব্লু ব্যাকগ্রাউন্ড আইডিইতে খাঁটি এমএস ডস সংকলক ছিল। এগুলি ১৯৮৯ থেকে ১৯৯৯ সালের মধ্যে প্রায় কোথাও প্রকাশিত হয়েছিল, সি ++ মানক হওয়ার অনেক আগে, যা ১৯৯৯ সালে ঘটেছিল so তাই তারা সি ++ এর প্রাক-মানক উপভাষা ব্যবহার করেছিল।

    সর্বাধিক উল্লেখযোগ্যভাবে তারা #include <iostream.h>মানটির চেয়ে সিনট্যাক্স ব্যবহার করেছিল #include <iostream>, তবে নেমস্পেসস, টেমপ্লেট ইত্যাদির মতো পুরো সি ++ বৈশিষ্ট্যগুলিও আচ্ছাদন করে নি The পরে যা স্ট্যান্ডার্ড হয়েছিল তার থেকে আলাদা।

  • পরে 90 এর দশকে, বোরল্যান্ড আরও ভাল ডান সঙ্গে কয়েকটি ডস / উইন্ডোজ সংকলক প্রকাশ করেছে। ভার্সন 5 পর্যন্ত কোথাও তারা সি ++ 98 এর সাথে সম্পূর্ণ কনফার্মেন্সের সাথে লড়াই করেছে, যদিও এই উইন্ডোজ সংস্করণগুলি এটির কাছাকাছি ছিল।

  • নব্বইয়ের দশকের শেষের দিকে, তারা বোরল্যান্ড সি ++ বিল্ডারের পক্ষে "টার্বো সি ++" নাম বাদ দেয়, যা কেবল আইডিই নয়, ডেলফির উপর ভিত্তি করে একটি সম্পূর্ণ আরএডি সরঞ্জাম ছিল। এই সংকলকগুলি সি ++ 98 এবং পরবর্তীকালে সি ++ 03 এর সাথে সম্পূর্ণরূপে মেনে চলছিল।

  • 2005 সালের দিকে, বোরল্যান্ড তাদের পণ্য লাইনের অংশ হিসাবে সংকলকগুলি বাদ দিয়েছে। সংকলকগুলি "কোডগার" হয়ে ওঠে, যা পরে এম্বারকাডেরোতে পরিণত হয়। তার কোথাও কোথাও, তারা বোরল্যান্ড বিল্ডারের একটি বিনামূল্যে সংস্করণ প্রকাশ করেছে যে তারা "টার্বো সি ++" নাম দিয়েছে। এই সংস্করণটি সি ++ 03 এর সাথে পুরোপুরি মেনে চলছিল।

  • আজকাল এই সংকলকগুলিকে এমবারকাডেরো সি ++ বিল্ডার বলা হয়। আমি বিশ্বাস করি তারা বর্তমানে কিছু সি ++ 14 দিয়ে সি ++ 11 পর্যন্ত সমর্থন করে। আরও তথ্য এখানে।

বলা বাহুল্য, একজন ছাত্র হিসাবে আপনার আধুনিক সংকলক ছাড়া কিছু ব্যবহার করা উচিত নয়। 2018 সালে সি ++ শিখার সময় 1991 সাল থেকে এমএস ডস সংকলক ব্যবহার করা কেবল উন্মাদনা। এটি কেবল পাল্টা উত্পাদনশীলই নয়, এটি সরাসরি ক্ষতিকারক এবং আপনাকে একটি খারাপ সি ++ প্রোগ্রামার করে তুলবে। যদি আপনার স্কুল আপনাকে টার্বো সি ++ 3.1 বা তার বেশি বয়সী ব্যবহার করতে বাধ্য করে, তবে আপনার স্কুলটি খারাপ এবং আপনার শিক্ষকরা মারাত্মকভাবে অক্ষম pe এই পোস্টটি তাদের এবং তাদের অধ্যক্ষের সাথে লিঙ্ক করুন।


2020 সালে ভারতে এখনও টার্বো সি ++ পাওয়া যায় । আরো এবং আরো - । "যে 40 বছর পুরানো সেকেলে টার্বো সি ভারতীয় কলেজ এখনও এটি এবং অমান্য করেছে আর শেখান কিছু, কারন আমি ব্যবহার শেখান তারা আমাকে শূন্য চিহ্ন দিলেন std::stringপরিবর্তে char *পরীক্ষায় কারণ তারা জানে না যে সি ++ মান নেই এবং char *অবচয় করা হয়েছে। "
পিটার মর্টেনসেন

@ পিটারমোরটেনসেন হ্যাঁ ... এটি C90 পড়ানোর ক্ষেত্রে কিছুটা ঠিক আছে (মজাদারভাবে, এটি এখনও ২০২০ সালের ভিজ্যুয়াল স্টুডিওর তুলনায় আরও ভাল), তবে এটি ব্যবহৃত সি ++ উপভাষা ছিল কেবল হাইওয়াইর।
লন্ডিন

7

টার্বো সি ++ একটি পুরানো সংকলক এবং এটি জিএনইউ সি ++ সংকলক থেকে কিছুটা আলাদা। আপনি যে কোডটি গনুহ কম্পাইলার দিয়ে পুরোপুরি কাজ করবে কিন্তু টার্বো সি সঙ্গে এটি চালানোর জন্য ভাগ করা ++, আপনি কয়েকটি মাত্র পরিবর্তন করতে প্রয়োজন:

1. পরিবর্তন হেডার ফাইলের নাম iostreamথেকে iostream.h
2. আর লাইন 'নামস্থান এসটিডি ব্যবহার "সরান এটা নয় টার্বো সি ++ এ প্রয়োজনীয়। পরিবর্তিত কোডটি এখানে:

#include <iostream.h>

int main() 
{
  cout << "Hello, World!";
  return 0;
}

6
আপনার উত্তরটি কী যুক্ত করে যা গৃহীত উত্তরটি দেয় না?
Rakete1111

7
দীর্ঘ উত্তরগুলি পড়ার মতো সময় নেই এমন লোকদের উদ্দেশ্যে জানুন।
যুবশ ঠাকুর

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