人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

C++處理for循環(huán)作用域規(guī)則

C++處理for循環(huán)作用域規(guī)則

更新時(shí)間:2022-07-21 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

   在 C++ 標(biāo)準(zhǔn)制定之前,在 for 循環(huán)中聲明的變量在循環(huán)外也可以訪(fǎng)問(wèn)。例如:

   for (int n=0; n〈MAX; ++n)
   {
   //..do something
   }
   ++n; //OK in pre-standard C++; illegal in ISO C++

   然而,在 ISO C++ 中,for 循環(huán)變量的作用域被限制為循環(huán)本身。雖然這一改變不可否認(rèn)地具有其意義,但是它卻影響到了老代碼以及新代碼。下面我將示范一些遷移技術(shù)幫助你處理這一改動(dòng)。


   遺留代碼

   對(duì)于那些使用標(biāo)準(zhǔn)制定之前的作用域規(guī)則的遺留代碼,如果使用與標(biāo)準(zhǔn)兼容的編譯器編譯它們,那么就有可能出現(xiàn)錯(cuò)誤。解決這一問(wèn)題的最好方法是修改代碼。但是,代碼修正需要徹底測(cè)試,而且有時(shí)候還會(huì)招致一連串的缺陷和編譯錯(cuò)誤。

   如果不想處理這一難于解決的問(wèn)題,同時(shí)又希望升級(jí)編譯器,那么不妨檢查一下能否有辦法恢復(fù)標(biāo)準(zhǔn)制定之前 for 循環(huán)變量的行為。如果確實(shí)使用了這種變量,那么打開(kāi)這個(gè)選項(xiàng),然后(使用注釋?zhuān)┟鞔_地在代碼記下這一事實(shí),以使將來(lái)的程序員知道如何正確地編譯這一代碼。

   If you're wary of relying on compilers' favors, there's an alternative patch: move the variable's definition outside the for-loop:
   如果不愿依賴(lài)編譯器的幫助,那么還有一種替代方案:將變量的定義移至 for 循環(huán)之外:
   int n=0; //originally was inside the for loop
   for (/*n was here*/; n〈MAX; ++n)
   {
   //..do something
   }
   int x=n; //OK
   要確保在有改動(dòng)的地方添加一句描述性注釋。
   作用域規(guī)則可能也會(huì)影響新代碼。比如說(shuō),假設(shè)我們需要使用一個(gè)依然保持標(biāo)準(zhǔn)制定之前行為的編譯器來(lái)編譯新代碼。
   為了確保 for 循環(huán)變量不在循環(huán)之外被訪(fǎng)問(wèn),我們可以將整個(gè)循環(huán)之外包圍一對(duì)大括號(hào)。
   {//restrict for-loop variables' scope
   for (int n=0; n〈MAX; ++n)
   {
   //..do something
   }
   }//restrict for-loop variables' scope
   With the help of conditional compilation, you can use a macro that inserts braces only when they are needed:
   在條件編譯的幫助下,我們可以使用一個(gè)宏來(lái)控制只在需要的地方插入大括號(hào):
   #if defined(OLD_FOR_SCOPING)
   #define OPEN_FOR_GUARD {
   #define CLOSE_FOR_GUARD }
   #else
   #define OPEN_FOR_GUARD
   #define CLOSE_FOR_GUARD
   #endif

   OPEN_FOR_GUARD
   for (int n=0; n〈MAX; ++n)
   {
   //..do something
   }
   CLOSE_FOR_GUARD

   如果你正在使用新代碼以及與標(biāo)準(zhǔn)兼容的編譯器,那么新作用域規(guī)則將不會(huì)帶來(lái)任何問(wèn)題。然而,當(dāng)涉及到遺留代碼或老編譯器時(shí),你可以應(yīng)用我在這個(gè)小技巧中描述的技術(shù)繞開(kāi)這一問(wèn)題。

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 建德市| 达州市| 沅陵县| 进贤县| 皋兰县| 嵊州市| 通榆县| 宁南县| 桂林市| 喀什市| 延寿县| 开封市| 扎囊县| 南皮县| 青岛市| 杭锦旗| 黄平县| 仁怀市| 察雅县| 阳新县| 台东县| 岚皋县| 尼勒克县| 文山县| 灌阳县| 三台县| 延安市| 娄烦县| 通化市| 开江县| 株洲县| 区。| 玉山县| 海门市| 睢宁县| 汝南县| 仪陇县| 和顺县| 黄浦区| 涞水县| 修文县|