從網(wǎng)上下載了一個程序先編譯后看看效果,發(fā)現(xiàn)原來的工程是Visual C++ 2003寫的,于是轉(zhuǎn)化到Visual C++ 2008 SP1的工程,一編譯,直接跳出對話說 Microsoft (R) C/C++ 優(yōu)化編譯器 遇到問題需要關(guān)閉。我們對此引起的不便表示抱歉。如下圖所示:

打開工程的項目屬性,發(fā)現(xiàn)優(yōu)化選項已經(jīng)選擇禁用了。沒辦法,開始慢慢檢查問題。
1、把編譯時報錯的文件注釋掉,確認其它文件編譯無誤。
2、把報錯的文件從全部注釋掉到部分注釋掉,判斷問題所在。
最終發(fā)現(xiàn)錯誤出在下面這句代碼上:
swprintf(text, L"text%d", this);
突然記起前面遇到同樣的問題的時候最后也是通過把sprintf函數(shù)注釋掉才解決的,把這句代碼注釋掉,再次編譯,發(fā)現(xiàn)問題解決了。
仔細看這句代碼,實在看不錯為什么要把類的this指針這樣輸出然后通過GDI+繪制到界面上去,也許是網(wǎng)上代碼良莠不齊,或者自己水平太菜還沒到能解讀的層次。
另外放上在編譯時同樣遇到過這個問題的另外程序的界面截圖,我很喜歡的一個程序界面,費了我好大勁才把殘缺的代碼弄出個勉強能看看的可執(zhí)行程序來:

(別問我要代碼,這種圖和代碼網(wǎng)上都有,只是代碼不全而已,不過是可以拼湊出可執(zhí)行程序來的)