内容提要:VC6.0編譯報錯:"error C2220: warning treated as error - no 'object' file generated"
原因是:warning treated as error 意思是将警告當成錯誤,這是編譯選項的問題,将警告級别設定得高導緻的錯誤。
解決的辦法是:将警告級别設定為低。
這種錯誤的原因是:
1)
是該檔案的代碼頁為英文,而我們系統中的代碼頁為中文。
解決方案:
a)建立一個VC項目,然後把代碼COPY過來。
b)啟動Microsoft Visual Studio 6.0,檔案->打開->選擇該cpp,然後儲存。從新打開程式檔案運作,此錯誤不再出現。
如果上述不能去掉錯誤,還可以點選項目,右擊選擇屬性->配置屬性->c/c++->正常,将“警告視為錯誤”的選項改為“否”。就可以!
2)
在編譯開關裡拿掉 /WX 開關
3)
輕按兩下這個編譯錯誤,這時錯誤會志向一條語句如:
sprintf(szCont,"L %f B %f H %f",p->dat.posdat.pos.l,p->dat.posdat.pos.b,p->dat.posdat.pos.h);
我們的一般看法,這條語句是沒有什麼錯誤的,甚至網上有朋友提出修改工程的屬性設定,忽略這些告警就可以了(這種方法網上講了很多,就不多說了),但是我個人認為這樣沒有解決本質問題,就檢視了一下MSDN發現,如下編寫便不會出現上邊的編譯錯誤:
sprintf_s(szCont,sizeof(szCont),"L %f B %f H %f",p->dat.posdat.pos.l,p->dat.posdat.pos.b,p->dat.posdat.pos.h);
相關指令還有:
itoa 改用 _itoa_s
strcat 改用 strcat_s
strcpy 改用 strcpy_s
等,VC 6的幫助檔案中有相關說明
(4)sources檔案裡添加 WARNLEVEL=0也可以,實際上是一樣的效果。