C/C++實戰013:BOOL和bool的區別及MSB6006報錯

今天開始寫北京精雕設備的二次開發,拿到開發包看了下精雕的提供的程序大部分都是BOOL類型的返回值(不是bool哦),所以這裏我們需要來了解下BOOL和bool的相關問題。

什麼是bool

bool是 C++ 定義的標準數據類型 :布爾類型,bool定義只有一個字節,可以用C++ 定義的標準關鍵字true 和 false(小寫的)來表示,即返回值爲!=0爲true,0爲false。

什麼是BOOL

BOOL不是基本的數據類型,是微軟定義的typedef int BOOL宏,是一個int型的三值邏輯,TRUE/FALSE/ERROR(大寫的),返回值爲>0的整數爲TRUE,0爲FALSE,<0爲ERROR。

BOOL和bool的區別

1.false/true是標準C++語言裏新增的關鍵字,而FALSE/TRUE需自行定義,使用#define定義如:

2.字符長度不同,bool只暫一個字節,BOOL長度根據內容而定

3.類型不同,bool是 C++ 定義的標準數據類型 :布爾類型,而BOOL是微軟定義的typedef int BOOL宏,不是基本的數據類型。

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

我用精雕寫了些項目需要的動態鏈接庫方便WEB平臺進行調用,實現遠程控制和獲取精雕設備,這是找精雕要的開發包,設備需要精雕開通權限方可使用(還是fanuc設備比較開放,開發包都網上有,精雕就不行了,有需要的自行找開發商咯),DLL已經寫好了但是還沒來得及測試,等測試好了我放一份到CSDN上,有興趣的可以自己嘗試下。

 

 編譯時遇到的問題:

在編譯精雕程序時遇到如下的問題:error MSB6006: “CL.exe”已退出,代碼爲 -1073741819,一開始我還以爲是代碼寫的有問題,我仔細檢查了代碼也沒發現任何問題,這問題可能是軟件的錯誤。

 爲了證明這個猜想,我創建一個全新的工程,不修改任何代碼,直接進行代碼編譯查看能否正常工作,這裏我們可以看到編譯失敗,報同樣的錯誤 error MSB6006: “CL.exe”已退出,代碼爲 -1073741819,所以我的猜測是對的VS本身出了故障,我用VC++6.0重寫了下代碼直接編譯通過了(別踩坑了....)。

Microsoft Visual Studio有時候還是挺坑的,想修復經常修復不了,卸載重新安裝吧又沒法卸載乾淨,再裝也裝不上。要不就換版本安裝,我還是喜歡用VC++6.0,找個免安裝版解壓就可以使用,方便快捷。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章