天天看點

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

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

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

什麼是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。

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

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上,有興趣的可以自己嘗試下。

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

 編譯時遇到的問題:

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

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

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

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

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

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