當Visual Studio中的注釋也會生產代碼時……

來源:互聯網
上載者:User

今天在VS2008中發現了超級令人抓狂的問題,經實驗發現在VS2010中有同樣的問題存在。

重現問題——

在VS2008中建立C++的“win32控制台應用程式”項目,並添加對MFC類庫的引用。

在_tmain函數前加上的注釋,然後在主函數中隨便寫上幾句代碼,並設定斷點,整個代碼。

 

 

 

最後在debug模式下,按F5運行,結果,程度在第二個斷點處沒有停住,而是直接運行過去!!

經過反覆的實驗——包括刪除ncb檔案,重啟VS,重啟電腦……忽然想到《Exceptional C++ Style》中有提到注釋可能對代碼產生影響,比如 “//?” 會被轉換成 “\”,結果使第二行代碼失效了!!

難道這裡也是因為注釋的問題?於是將_tmain()前的注釋去掉後,果然,斷點的功能居然又回來了!!

 

 注釋掉的代碼也會對程式的調試產生影響!!為了弄明白這個問題,本人接下來查看了其產生的彙編代碼——即程式運行到第一個斷點處時,調出反組譯碼視窗,

明明是好好的一段注釋代碼,但微軟的VS編譯器,硬是在其中加了一堆代碼。本人現在才開始學win32下的彙編,只知道ebp,esp是用在函數調用時傳遞參數用的。

 

在已經被注釋掉的代碼卻產生了目標代碼,雖然沒有對程式的結果造成直接影響(該執行的地方都正常運行了,上面的程式可以正常輸出1),但不能在調試時查看斷點,最令人揪心的是不知這些多餘的代碼何時會產生更大的影響。並且發現對已經注釋掉的結構體裡的內容進行修改後(比如添加或減少幾個欄位的申明),也會影響代碼的產生……

當本人花了幾個小時找出這個問題後,心情依然沉重,結果是現在不敢在VC++中使用 // 風格的注釋了(上面的注釋掉成/* */後就沒問題),並且嘗試了其它可能出現問題的情況。

 

最後,自己重建立立項目,並且所有的代碼都自己敲上去,發現一切OK。原來~~原來,上面那段注釋過的代碼是同事用QQ發給我的!!!!而QQ對話方塊中的換行和VS中的轉行編碼不一樣,於是就出現了上面這種注釋掉的代碼會對程式產生影響的情況~~   QQ~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.