টি এল; ডিআর
একমাত্র উপায় আপনি একটি intializer বা ভিতরে কিছু অ তুচ্ছ বস্তুর সঙ্গে একটি ভেরিয়েবল ডিক্লেয়ার করতে পারেন যদি একটি পরিচয় করিয়ে দিতে হয় ব্লক সুযোগ ব্যবহার {}
বা অন্যান্য নিয়ন্ত্রণ কাঠামো যে এটি একটি মত নিজের সুযোগ আছে হয়েছে লুপ বা বিবৃতি যদি ।
গোরীর বিবরণ
আমরা দেখতে পারি যে ক্ষেত্রে শুধু হয় লেবেল বিবৃতি মত লেবেল একটি সঙ্গে ব্যবহার এতে যান বিবৃতি ( এই আচ্ছাদিত করা হয় C ++ স্ট্যান্ডার্ডের খসড়ার অধ্যায় 6.1 লেবেলযুক্ত বিবৃতি ) এবং আমরা অধ্যায় থেকে দেখতে পারেন 6.7
অনুচ্ছেদ 3 যে জাম্পিং ঘোষণা পাস অনেক ক্ষেত্রে অনুমোদিত নয় যার সাথে একটি সূচনা সহ:
কোনও ব্লকে স্থানান্তর করা সম্ভব, তবে এমনভাবে নয় যে প্রারম্ভিককরণের সাথে ঘোষণাকে বাইপাস করে। এমন একটি প্রোগ্রাম যা 87 87 টি লাফিয়ে এমন একটি বিন্দু থেকে যেখানে স্বয়ংক্রিয় স্টোরেজ সময়কালের সাথে একটি ভেরিয়েবল এমন বিন্দুতে অবধি থাকে না যেখানে এটি স্কোপতে থাকে তবে ভেরিয়েবলের স্কেলার টাইপ না হয়, তুচ্ছ ডিফল্ট কনস্ট্রাক্টর সহ শ্রেণীর ধরণ এবং একটি তুচ্ছ ডেস্ট্রাক্টর, এর মধ্যে একটির সিভি-কোয়ালিটিড সংস্করণ, বা পূর্ববর্তী ধরণেরগুলির একটি অ্যারে এবং ইনিশিয়ালাইজার (8.5) ছাড়াই ঘোষণা করা হয়।
এবং এই উদাহরণ সরবরাহ করে:
void f() {
// ...
goto lx; // ill-formed: jump into scope of a
ly:
X a = 1;
// ...
lx:
goto ly; // OK, jump implies destructor
// call for a followed by construction
// again immediately following label ly
}
দ্রষ্টব্য, এখানে কিছু সূক্ষ্মতা রয়েছে, আপনাকে কোনও স্কেলার ঘোষণাপত্রের বাইরে যাওয়ার অনুমতি দেওয়া হয়েছে যার কোনও সূচনা নেই, উদাহরণস্বরূপ:
switch( n )
{
int x ;
//int x = 10 ;
case 0:
x = 0 ;
break;
case 1:
x = 1 ;
break;
default:
x = 100 ;
break ;
}
পুরোপুরি বৈধ ( সরাসরি উদাহরণ )। অবশ্যই আপনি যদি প্রতিটি ক্ষেত্রে একই পরিবর্তনশীল ঘোষণা করতে চান তবে তাদের প্রত্যেকের নিজস্ব নিজস্ব সুযোগ প্রয়োজন তবে এটি স্যুইচ বিবৃতিগুলির বাইরেও একইভাবে কাজ করে , যাতে এটি বড় অবাক হওয়ার মতো না।
অতীতে আরম্ভের অনুমতি না দেওয়ার যৌক্তিক হিসাবে, ত্রুটি প্রতিবেদন 467 যদিও কিছুটা ভিন্ন ইস্যুটি আচ্ছাদন স্বয়ংক্রিয় চলকগুলির জন্য একটি যুক্তিসঙ্গত কেস সরবরাহ করে :
[...] স্বয়ংক্রিয় ভেরিয়েবলগুলি, যদি সুস্পষ্টভাবে আরম্ভ করা না হয় তবে ফাঁদগুলির উপস্থাপনা সহ অনির্দিষ্ট ("আবর্জনা") মান থাকতে পারে, [...]
আপনি একাধিক মামলার উপর স্যুইচের মধ্যে একটি ক্ষেত্র প্রসারিত করেন এমন ক্ষেত্রে সম্ভবত এটি আরও আকর্ষণীয় হবে যার সর্বাধিক বিখ্যাত উদাহরণ সম্ভবত ডাফের ডিভাইস যা দেখতে এরকম কিছু দেখাবে:
void send( int *to, const int *from, int count)
{
int n = (count + 7) / 8;
switch(count % 8)
{
case 0: do { *to = *from++; // <- Scope start
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n > 0); // <- Scope end
}
}