সি ++ উত্স কোডটি কীভাবে সংকলন করবেন ("iostream.h পাওয়া গেল না" ত্রুটি)?


20

আমি সি ++ বা কোনও প্রোগ্রামিং ভাষা নিয়ে আলোচনা করতে চাই না! আমি হিলিওলোর্ড.পি.পি. সংকলন সম্পর্কে লিনাক্স উবুন্টুতে আমি কী ভুল করছি তা জানতে চাই!

আমি সি ++ শিখছি তাই আমার পদক্ষেপগুলি হ'ল:

হ্যালো.সি.পি খুলুন এবং এই লিখুন

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}

সুতরাং, এর পরে আমি এটি টার্মিনালে চেষ্টা করেছি

g++ hello.cpp

এবং আউটপুট হয়

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

আপনি কি পরামর্শ দিচ্ছেন? আমার জন্য কোনও ধাপে ধাপে গাইড? ধন্যবাদ!


2
যদি কেউ এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোটিং বিবেচনা করে থাকে: এটি সত্যই একটি প্ল্যাটফর্ম-নির্দিষ্ট সমস্যা, কারণ উইন্ডোজের সর্বাধিক জনপ্রিয় সি ++ সংকলক (মাইক্রোসফ্ট ভিজ্যুয়াল সি ++) এই বাক্য গঠনটি গ্রহণ করে তবে বেশিরভাগ অন্যান্য সংকলক ( g++উবুন্টু সহ ) এটি গ্রহণ করবেন না।
— এলিয়াহ কাগন

# অন্তর্ভুক্ত <iostream> নেমস্পেস স্ট্যান্ড ব্যবহার করে; int main () {cout << "হ্যালো ওয়ার্ল্ড"; প্রত্যাবর্তন 0; work এটি কাজ করতে পারে ...

উত্তর:


43

আপনার ব্যবহার করা উচিত #include <iostream>, না iostream.h; জ ফর্ম খুব পুরানো এবং বছর ধরে অসমর্থিত হয়েছে।

আপনি একাধিক আপনি সম্ভবত উপর জানতে চাই পড়তে পারেন জ বনাম অ জ এখানে ফরম: http://members.gamedev.net/sicrane/articles/iostream.html

(প্লাস, আপনার লেখা std::coutবা একটি লাইন থাকা উচিত using namespace std;অন্যথায় আপনার পরবর্তী ত্রুটি সংকলক সম্পর্কে কোনও সংজ্ঞা না পাওয়া সম্পর্কে হবে cout))


4
@ গ্যাব্রিয়েল সি ++ এর দীর্ঘ ইতিহাস রয়েছে, এটি 1980 এর মাঝামাঝি। এখন বেশ কয়েকটি প্রকাশিত মান রয়েছে, যার সর্বশেষতমটি (সি ++ 11) এই বছরের শুরুর দিকে প্রকাশিত হয়েছে এবং পূর্ববর্তী একটি (সমস্ত সংকলক আজ অনুসরণ করেন) 2003 (সি ++ 03) এর তারিখের। আপনি যে লিঙ্কটি যুক্ত করেছেন সেটিকে তার চেয়ে অনেক বেশি বয়স্ক বলে মনে হচ্ছে, সংকলক সফ্টওয়্যার থেকে এটি উল্লেখ করে বিচার করা (উইকিপিডিয়া অনুসারে, বোরল্যান্ড টার্বো সি ++ 1994 সালে বন্ধ করা হয়েছিল)। আপনি যদি C ++ 03 স্ট্যান্ডার্ড অনুসরণ করে টিউটোরিয়াল চয়ন করেন, আপনার কোড আজ উপলব্ধ যে কোনও লিনাক্স বিতরণে কাজ করবে।
— রিকার্ডো মুরি

1
: আপনার প্রশ্নের মত @gabriel মনে হচ্ছে ইতিমধ্যেই Stackoverflow উত্তর হয়েছে stackoverflow.com/questions/909323/...
— Riccardo Murri

1
আপনার প্রয়োজনও হতে পারে: sudo apt-get ইনস্টল বিল্ড-আবশ্যক
— ডেভিড 6

2
@ ডেভিড:: আমি বিল্ড- অ্যাসোসিয়েশন ইনস্টল করেছি তবে iostream.hআমার সিস্টেমে নেই। প্রকৃতপক্ষে, সি ++ শিরোনাম ফাইলগুলি libstdc ++ - dev দ্বারা ইনস্টল করা হয় , যা সি ++ সংকলক প্যাকেজ জি ++ এর দ্বারা প্রয়োজনীয়, যা পরিবর্তে বিল্ড- আবশ্যক দ্বারা প্রয়োজনীয় । সুতরাং, না, আপনাকে সাধারণ সি ++ প্রোগ্রামগুলি সংকলন করার জন্য বিল্ড-অপরিহার্য প্রয়োজন হবে না ; g++প্যাকেজ ইনস্টল করা যথেষ্ট।
— রিকার্ডো মুরি 10

1
শুধু উপসর্গ coutব্যতিরেকে কাজ করার পক্ষে std::, using std::cout;তার চেয়ে ভাল using namespace std;। এমনকি একাধিক usingবিবৃতি (ব্যতীত namespace) সাধারণত ভাল, যেহেতু আপনি stdযে নামটি চান না সেই নাম স্থানটি থেকে আপনি সনাক্তকারী আনেন না এবং আপনার নিজের প্রোগ্রামে নামের সাথে বিরোধ করতে পারে।
— এলিয়াহ কাগন

15

আপনি পরিবর্তন করা উচিত iostream.hকাছে iostream। আপনারা যেমন পাচ্ছেন iostream.hঠিক iostreamতেমন ত্রুটিও পেয়েছিলাম, কিন্তু যখন আমি ন্যায়পদে পরিবর্তন করেছি , এটি সঠিকভাবে কাজ করেছে। হয়তো এটি আপনার জন্যও কাজ করবে।

অন্য কথায়, লাইনটি বলে যে এটি পরিবর্তন করে:

#include <iostream.h>

পরিবর্তে এটি বলুন:

#include <iostream>

স্ট্যান্ডার্ডে সংজ্ঞায়িত হিসাবে সি ++ স্ট্যান্ডার্ড লাইব্রেরি শিরোনাম ফাইলগুলির .hএক্সটেনশন নেই।

রিকার্ডো মুরির উত্তর হিসাবে উল্লিখিত হয়েছে , আপনাকে coutএর সম্পূর্ণরূপে যোগ্য নামেও কল করতে হবে std::cout, অথবা এই দুটি লাইনের একটি থাকতে হবে (সাধারণত আপনার #includeনির্দেশের নীচে তবে অন্য কোডের উপরে):

using namespace std;
using std::cout;

দ্বিতীয় উপায়টিকে বিশেষত গুরুতর প্রোগ্রামিং প্রকল্পগুলির পক্ষে অগ্রাধিকারযোগ্য হিসাবে বিবেচনা করা হয়, যেহেতু এটি কেবলমাত্র নেমস্পেসে std::coutসমস্ত নাম আনার পরিবর্তে প্রভাব ফেলে std(কিছু অংশ সম্ভবত আপনার প্রোগ্রামে ব্যবহৃত নামগুলিতে হস্তক্ষেপ করতে পারে)।


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