天天看點

VC6.0編譯報錯:"error C2220: warning treated as error - no 'object' file generated"

内容提要: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也可以,實際上是一樣的效果。