এই কোডটি বিবেচনা করুন:
void foo()
{
goto bar;
int x = 0;
bar: ;
}
জিসিসি এবং ক্ল্যাং এটিকে প্রত্যাখ্যান করে , কারণ bar:
পরিবর্তনশীল সূচনাটিকে বাইপাস করে। এমএসভিসি মোটেও অভিযোগ করে না ( সতর্কতার কারণ হিসাবে ব্যবহার x
করা বাদে bar:
)।
আমরা একটি দিয়ে একই জিনিস করতে পারি switch
:
void foo()
{
switch (0)
{
int x = 0;
case 0: ;
}
}
এখন তিনটি সংকলক ত্রুটি নির্গত করে ।
এই স্নিপেটগুলি কি গঠনযুক্ত? বা তারা ইউবি সৃষ্টি করে?
আমি ভাবতাম যে দু'জনই দুর্বল, তবে আমি স্ট্যান্ডার্ডের উদ্ভাসিত অংশগুলি খুঁজে পাই না। [stmt.goto] এ সম্পর্কে কিছুই বলে না এবং [stmt.select ] ও করে না ।
/permissive-
এমএসভিসিতে পতাকা যুক্ত করুন এবং এটিও অভিযোগ করবে। আমি জানি না যে পতাকাটি ব্যতীত এমএসভিসির আচরণটি সঠিকভাবে সংজ্ঞায়িত হয়েছে কিনা (আমি তা ধরে নেব, নইলে তারা কেন এটি অনুমতি দেবে?)।
x
লাফ দেওয়ার পরে ব্যবহার করেন তবে বিষয়টি আরও তুচ্ছ ।