আমার প্রভাষক দ্বারা রচিত সমস্ত সি ফাইল কেন প্রথম লাইনে একটি # দিয়ে শুরু হবে?


431

আমি কয়েকটি সি কোর্স নোট দিয়ে যাচ্ছি, এবং প্রতিটি সি প্রোগ্রামের উত্স ফাইলটি প্রোগ্রামের #প্রথম লাইনে একটি একক দিয়ে শুরু হয় ।

তারপরে ফাঁকা লাইন রয়েছে এবং mainফাংশন অনুসারে সেই অন্যান্য জিনিসগুলি অনুসরণ করছে ।

এর কারণ কী #?

(এটি এখন মেয়াদোত্তীর্ণ এবং আমি সত্যিই অধ্যায়টি জিজ্ঞাসা করতে পারি না))

এখানে একটি উদাহরণ:

#

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}


3
আমি প্রথম উদাহরণটি কোর্সের নোটস পর্যন্ত রেখেছি। আক্ষরিক অর্থে আছে #, তারপর একটি ফাঁকা লাইন, তারপর প্রোগ্রাম।
দ্য মেন ম্যান

30
খালি করার মূল উদ্দেশ্য #হ'ল আপত্তি। আপনি যদি সবার থেকে হ্যাককে বিভ্রান্ত করতে চান তবে আপনি উদাহরণস্বরূপ আপনার সমস্ত উত্স ফাইলগুলি লাইন দিয়ে শুরু করতে পারেন #//#BEGIN#\\#(যা একেবারেই কিছুই করে না)।
লুন্ডিন

3
@Bathsheba এটা সম্ভবত এই ব্যক্তিদের এক cl.cam.ac.uk/people/academic.html
TylerH

7
@ বাথশেবা এই শেষের স্ট্যাম্পগুলি দেখায় যে আপনি প্রশ্ন জিজ্ঞাসার মাত্র এক মিনিটের পরে যুক্তিসঙ্গত বিস্তারিত উত্তর দিয়েছেন, সি 99 রেফারেন্স স্ট্যান্ডার্ড থেকে প্রাসঙ্গিক উদ্ধৃতি দিয়ে সম্পূর্ণ করুন। আপনি অবশ্যই একটি ষড়যন্ত্র ব্যক্তি। সম্ভবত ইলুমিনাটিতে। উভয় প্রশ্ন যদিও এত জনপ্রিয় হয়ে উঠবে?
নাট

উত্তর:


614

বাহ, এই প্রয়োজনীয়তা ১৯ 1970০ এর দশকে ফিরে এসেছে

ইন খুব তাড়াতাড়ি প্রাক মান C- এর দিন, যদি তোমরা ডাকা চেয়েছিলেন প্রাক প্রসেসর , তাহলে আপনি একটি লিখতে ছিল #একটি উৎস ফাইলের প্রথম লাইনে প্রথম জিনিস হিসাবে। ফাইলের শীর্ষে কেবল একটি লেখা #অন্য প্রিপ্রোসেসর নির্দেশাবলীর স্থান নির্ধারণে নমনীয়তা দেয়।

দুর্দান্ত ডেনিস রিচি নিজেই একটি মূল সি খসড়া থেকে :

12. সংকলক নিয়ন্ত্রণ লাইন

[...] প্রিপ্রোসেসর আহ্বান করার জন্য, প্রোগ্রামের প্রথম লাইনটি # দিয়ে শুরু হওয়া প্রয়োজন। যেহেতু নাল লাইনগুলি প্রিপ্রোসেসর দ্বারা উপেক্ষা করা হয়, এই লাইনে অন্য কোনও তথ্য থাকা প্রয়োজন।

সেই দস্তাবেজটি দুর্দান্ত পাঠের জন্য তৈরি করেছে (এবং আমাকে এই পাগল বিড়ালের মতো প্রশ্নটিতে ঝাঁপিয়ে পড়ার অনুমতি দিয়েছে)।

আমার সন্দেহ হয় যে প্রভাষকটি কেবল সংবেদনশীল - এএনএসআই সি এর পরে অবশ্যই এটির প্রয়োজন হয়নি it


22
যেহেতু আমি এটি বুঝতে পারি, প্রয়োজনটি এই নয় যে প্রথম অক্ষরটি #নিজেই একটি লাইনে থাকা উচিত , এটি কেবল একটি দিয়ে শুরু হয় #, তবে সরাসরি কেন সরাসরি যাবেন না #include? নাকি আমি এটা ভুল বুঝছি?
ফেডেরিকো ক্লেজ কুলোকা

14
@ বাথশেবা " এই প্রিপ্রোসেসরটি আহ্বান করার জন্য, প্রোগ্রামটির প্রথম লাইনটি # দিয়ে শুরু হওয়া প্রয়োজন। যেহেতু নাল লাইনগুলি প্রিপ্রসেসর দ্বারা উপেক্ষা করা হয়, এই লাইনে অন্য কোনও তথ্য থাকা দরকার নেই। " <- সুতরাং এটি করতে ইতিমধ্যে একটি প্রাক প্রসেসর নির্দেশ ধারণ করে, কিন্তু এটা প্রয়োজনীয় নয় ....

5
আমি সি (1980) এ প্রোগ্রামিং শুরু করার সময় এটির কোনও প্রয়োজন ছিল না। এএনএসআই সি 1989 অবধি মানসম্মত হয়নি
পোজো-লোক

29
@ federico-klez-culloca যদি এটি অন্তর্ভুক্ত হয়ে যায় তবে ফাইলটি একটি শীর্ষস্থানীয় # ছাড়াই শেষ হতে পারে কারণ ভবিষ্যতে কেউ নেতৃত্বের # এর পার্শ্ব প্রতিক্রিয়া সম্পর্কে অবগত না হয়ে ভবিষ্যতে অপ্রয়োজনীয় অন্তর্ভুক্তটিকে মুছে ফেলতে পারে।
ফ্যাডওয়ে

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

1

কিছু না

সি / সি ++ এর আইএসও মান হিসাবে:

ফর্মটির একটি পূর্বনির্ধারিত নির্দেশিকা

# new-line

কোন প্রভাব আছে।

সুতরাং আজকের সংকলকগুলিতে, খালি হ্যাশ কিছুই করে না (যেমন- new-line ;কোনও কার্যকারিতা নেই)।


দ্রষ্টব্য : ইন প্রাক মান সি , # new-lineএকটি গুরুত্বপূর্ণ ভূমিকা, এটা সি প্রাক প্রসেসর ডাকা ব্যবহৃত হয় (@Bathsheba দ্বারা সরু আউট হিসাবে) ছিল। সুতরাং, এখানে কোড হয় হয় সময়কাল মধ্যে লেখা হয়েছিল, বা অভ্যাস থেকে এসেছিল।


-5

সি এর সংকলন প্রক্রিয়া সম্পর্কে আপনার জানা দরকার কারণ এটি উত্সর কোডটি কীভাবে এক্সিকিউটেবল বাইনারি কোড (ফাইল) এ রূপান্তরিত হয় তা "অবশ্যই" জানতে হবে।

সংকলন প্রক্রিয়া থেকে, সি উত্স কোডটি প্রাক প্রসেসর বিভাগটি অতিক্রম করতে হবে। তবে কোডটি প্রাক-প্রক্রিয়া করতে কম্পাইলারকে কীভাবে বলব? ... যে সময়টি # প্রতীকটি সংকলকটিতে প্রিপ্রসেসের সূচকটির সাথে পরিচয় হয়েছিল।

উদাহরণস্বরূপ #define PI 3.141সোর্স কোডে রয়েছে। তারপরে এটি প্রাক প্রসেসিং সেশনের পরে পরিবর্তন করা হবে। মানে, সমস্ত পিআই 3.141 এ পরিবর্তিত হবে।

এটির মতো #include <stdio.h>, স্ট্যান্ডার্ড আই / ও ফাংশনগুলি আপনার উত্স কোডে যুক্ত হবে।

আপনি যদি একটি Linux মেশিনে থাকে, তাহলে মত কম্পাইল gcc -save-temps source_code.c। এবং সংকলক আউটপুট দেখুন।

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