সি ++ মডিউল খসড়া (সি ++ 17 এর পরে প্রযুক্তিগত নির্দিষ্টকরণ)
একটি খসড়া এবং C জন্য বিভিন্ন আপডেট পুনর্বিবেচনা / সি ++ মডিউল স্পেসিফিকেশন দ্বারা প্রকাশ করা হয়েছে WG21 open-std.org উপর। আমি এখানে কেবলমাত্র সর্বশেষ নথিগুলিতে লিঙ্ক করব:
- ওয়ার্কিং ড্রাফ্ট, মডিউল N4610 (অক্টোবর 2016) এর জন্য সি ++ তে বর্ধিতকরণ ।
- চতুর্থ সংশোধনী P0142R0 (মার্চ 2016) হিসাবে প্রকাশিত ।
- P0143R2 (মার্চ 2016) হিসাবে প্রকাশিত মডিউলগুলির জন্য ওয়ার্ডিং ।
- ঝনঝন টিম তাদের পরিবর্তনগুলির একটি দ্বিতীয় সংশোধন প্রকাশ করেছে: P0273R1 (অক্টোবর 2016)।
নিম্নলিখিত ব্লগ পোস্টগুলিতে মান সভার একটি সংক্ষিপ্তসার এবং বিশেষত মডিউল খসড়ার বর্তমান অবস্থার সংক্ষিপ্তসার রয়েছে:
আপডেট: কোনা ট্রিপ রিপোর্টে যেভাবে আমি উপরে লিঙ্ক করেছি তাতে বর্ণিত হিসাবে বর্তমানে দুটি প্রতিযোগিতামূলক প্রস্তাব রয়েছে, একটি মাইক্রোসফ্টের এবং একটি ক্ল্যাংয়ের। মাইক্রোসফ্টের প্রস্তাবিত সমাধান ম্যাক্রোস রফতানি করার অনুমতি দেয় না, যখন ক্ল্যাং দল থেকে সমাধান ম্যাক্রো রফতানিকে সমর্থন করবে। এখনও অবধি মাইক্রোসফ্ট আনুষ্ঠানিকভাবে একটি মডিউল নির্দিষ্টকরণের জন্য একটি খসড়া জমা দিয়েছে।
মাইক্রোসফ্ট প্রস্তাবিত মডিউল স্পেসিফিকেশন
এই প্রস্তাবটিতে থাকা সর্বাধিক গুরুত্বপূর্ণ ধারণাগুলির একটি দ্রুত ওভারভিউ এখানে দেওয়া হল। এটির খসড়া হিসাবে এটি সম্ভবত এখনও পরিবর্তন হতে পারে। নতুন মডিউলগুলির স্ট্যান্ডার্ডটিতে অন্যান্য বিষয়গুলির মধ্যে অন্তর্ভুক্ত থাকবে:
একটি module
শব্দ একটি মডিউল ডিক্লেয়ার, একাধিক ফাইল এই ডিক্লেয়ার করতে পারেন একটি মডিউল নির্মাণ করতে (কিন্তু প্রতিটি মডিউলের জন্য শুধুমাত্র একটি সংকলন ইউনিট একটি থাকতে পারে export {}
অধ্যায়):
module M;
import
পরিবর্তে মডিউলগুলি আমদানি করার জন্য একটি কীওয়ার্ড এর পরিবর্তে import
ব্যবহারের সিদ্ধান্ত নেওয়া হতে পারে using module
, সুতরাং একটি নতুন আমদানি কীওয়ার্ড এড়ানো যায়।
import std.io;
import module.submodule;
একটি export
সিনট্যাক্স, যা জনসাধারণের ঘোষণাগুলি সংজ্ঞায়িত করে যা এই মডিউলটির অংশ, মডিউলটির অংশ হিসাবে রফতানি করা উচিত নয় এমন ইন্টারফেস অ- ঘোষণাগুলি রফতানি ব্লকের বাইরে সংজ্ঞায়িত করা হবে। ঘোষণাগুলি সি / সি ++ এ যে কোনও ধরণের ঘোষণা হতে পারে, এটি কেবল ফাংশনই নয় তবে ভেরিয়েবল, স্ট্রাক্ট, টেম্পলেট, নেমস্পেস এবং ক্লাসগুলি:
export {
int f(int);
double g(double, int);
int foo;
namespace Calc {
int add(int a, int b);
}
}
void not_exported_function(char* foo);
মডিউলগুলির একটি গুরুত্বপূর্ণ পরিবর্তনটি হ'ল ম্যাক্রো এবং প্রিপ্রসেসর সংজ্ঞাগুলি মডিউলগুলিতে স্থানীয় হবে এবং রফতানি হবে না। সুতরাং আমদানি করা মডিউলগুলিতে ম্যাক্রোগুলির কোনও প্রভাব নেই:
#define FILE "my/file"
import std.io; //will not be impacted by the above definition
এর গুরুত্বপূর্ণ নোটটি যে বর্তমান প্রিপ্রসেসর সিস্টেম এবং মডিউল উভয়ই সহাবস্থান করতে সক্ষম হবে এবং ম্যাক্রোগুলি অন্তর্ভুক্ত করার জন্য শিরোনামগুলি এখনও উদাহরণস্বরূপ ব্যবহার করা যেতে পারে।
আরও বিস্তারিত তথ্যের জন্য আমি খসড়াটি পড়ার পরামর্শ দিই।
ঝনঝন মডিউল
কলং একটি মডিউল বাস্তবায়নে কাজ করছে যা ঝনঝন মডিউল পৃষ্ঠায় পাওয়া যাবে । তবে ক্ল্যাং বর্তমানে মডিউলগুলির জন্য একটি কংক্রিট বাক্য গঠন প্রয়োগ করে না, অর্থাৎ উপরে বর্ণিত সিনট্যাক্সগুলির কোনওটিই ক্ল্যাং দ্বারা প্রয়োগ করা হয়নি। এটি ব্যাখ্যা করতে পৃষ্ঠায় নিম্নলিখিত বিবৃতি রয়েছে:
বর্তমানে আমদানির ঘোষণার জন্য কোনও সি বা সি ++ সিনট্যাক্স নেই। ঝনঝনানি সি ++ কমিটিতে মডিউলগুলির প্রস্তাব ট্র্যাক করবে। আজ মডিউলগুলি কীভাবে আমদানি হয় তা দেখতে আমদানি সহ বিভাগটি দেখুন।
বর্তমানে কলং দ্বারা প্রয়োগ করা প্রধান অংশটি হ'ল "মডিউল মানচিত্রের ভাষা" যা বিদ্যমান কোডের জন্য মডিউল ম্যাপ লেখার অনুমতি দেয় যা এখনও শিরোলেখ ফাইলগুলি ব্যবহার করে।
মডিউলগুলি থেকে ম্যাক্রো রফতানি
উপরে উল্লিখিত হিসাবে এখনও ম্যাক্রো রফতানি চূড়ান্ত মডিউল টিএস এর অংশ হবে কিনা তা এখনও অস্পষ্ট । ইন P0273R1 নিম্নলিখিত সিনট্যাক্স ম্যাক্রো রপ্তানি প্রস্তাবিত হয়েছিল:
#export define MAX(A,B) ((A) > (B)) ? (A) : (B);