না, উত্স কোড কোনও ফাইল থেকে আসতে হবে না (কোনও ফাইলেও যাবে না)।
আপনি একটি পাইপের মধ্যে সি ++ সম্পূর্ণরূপে সংকলন করতে পারেন (এবং লিঙ্ক করুন) আপনার সংকলকটিকে মাঝখানে রেখে eg
generate_source | g++ -o- -xc++ - | do_something_with_the_binary
এবং এটি কয়েক দশক ধরে এমন ছিল। আরো দেখুন:
std::source_location
সি ++ 20 এ প্রবর্তনের ফলে এই অবস্থার কোনও পরিবর্তন হয় না। এটি ঠিক যে কিছু কোডের একটি সু-সংজ্ঞায়িত উত্সের অবস্থান থাকবে না (বা এটি ভাল সংজ্ঞাযুক্ত হতে পারে তবে খুব অর্থবহ নয়)। আসলে, আমি বলব যে std::source_location
ফাইলগুলি সংজ্ঞায়িত করার জন্য জিদ কিছুটা মায়োপিক ... যদিও ন্যায্যতার সাথে এটি কেবলমাত্র ম্যাক্রো-কম সমতুল্য __FILE__
এবং __LINE__
যা ইতিমধ্যে সি ++ (এবং সি) তে বিদ্যমান রয়েছে।
@ এইচবিভি 6 নোট করে যে আপনি যদি এর মানটি মুদ্রণ করেন __FILE__
স্ট্যান্ডার্ড ইনপুট স্ট্রিম থেকে জিসিসি ব্যবহার করে সংকলনের :
echo -e '#include <iostream>\n int main(){std::cout << __FILE__ ;}' | g++ -xc++ -
ফলস্বরূপ নির্বাহযোগ্য প্রিন্টগুলি চালাচ্ছেন <stdin>
।
সোর্স কোড এমনকি ইন্টারনেট থেকে আসতে পারে।
@ মরউভেন এই কোডটি নোট করেছেন:
#include <https://raw.githubusercontent.com/Morwenn/poplar-heap/master/poplar.h>
// Type your code here, or load an example.
void poplar_sort(int* data, size_t size) {
poplar::make_heap(data, data + size);
poplar::sort_heap(data, data + size);
}
গডবোল্টে কাজ করে (তবে আপনার মেশিনে কাজ করবে না - কোনও জনপ্রিয় সংকলক এটি সমর্থন করে না))
আপনি কি ভাষার উকিল? ঠিক আছে, সুতরাং স্ট্যান্ডার্ড পরামর্শ দেওয়া যাক ..
ফাইলগুলি থেকে সি ++ প্রোগ্রাম উত্সগুলি আসা উচিত কিনা এই প্রশ্নের ভাষার মানটিতে পরিষ্কারভাবে উত্তর দেওয়া হয়নি। সি ++ 17 স্ট্যান্ডার্ড (এন 4713) এর খসড়াটি দেখুন, বিভাগ 5.1 [লেক্স.সেসারেট] পড়ছে:
- প্রোগ্রামটির পাঠ্যটি এই নথিতে উত্স ফাইল নামক ইউনিটে রাখা হয়েছে। সমস্ত শিরোলেখ (20.5.1.2) এবং উত্স ফাইলগুলি অন্তর্ভুক্ত (19.2) প্রিপ্রোসেসিং নির্দেশের মাধ্যমে অন্তর্ভুক্ত একটি উত্স ফাইল # অন্তর্ভুক্ত, শর্তসাপেক্ষ অন্তর্ভুক্তি (19.1) প্রিপ্রোসেসিং নির্দেশিকাগুলির দ্বারা বাদ দেওয়া কোনও উত্স লাইনকে অনুবাদ ইউনিট বলে।
সুতরাং, উত্স কোড অগত্যা প্রতি সেফ কোনও ফাইলে রাখা হয় না, তবে "উত্স ফাইল নামক ইউনিটে" থাকে। কিন্তু তারপরে, অন্তর্ভুক্তগুলি কোথা থেকে আসে? কেউ ধরে নিতে পারে যে তারা ফাইল সিস্টেমে নাম করা ফাইলগুলি থেকে এসেছে ... তবে এটিও আদেশ দেওয়া হয় না।
যে কোনও হারে, std::source_location
এই শব্দটিকে C ++ 20 এ পরিবর্তন করতে বা এর ব্যাখ্যাকে (এএএএফআইটি) প্রভাবিত করার মতো বলে মনে হচ্ছে না।
__FILE__
। ক্লাস আপনাকেsource_location
কেবল ফাংশন কল সাইটে এটি পেতে দেয়।