今天开始写北京精雕设备的二次开发,拿到开发包看了下精雕的提供的程序大部分都是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已经写好了但是还没来得及测试,等测试好了我放一份到优快云上,有兴趣的可以自己尝试下。
编译时遇到的问题:
在编译精雕程序时遇到如下的问题:error MSB6006: “CL.exe”已退出,代码为 -1073741819,一开始我还以为是代码写的有问题,我仔细检查了代码也没发现任何问题,这问题可能是软件的错误。
为了证明这个猜想,我创建一个全新的工程,不修改任何代码,直接进行代码编译查看能否正常工作,这里我们可以看到编译失败,报同样的错误 error MSB6006: “CL.exe”已退出,代码为 -1073741819,所以我的猜测是对的VS本身出了故障,我用VC++6.0重写了下代码直接编译通过了(别踩坑了....)。
Microsoft Visual Studio有时候还是挺坑的,想修复经常修复不了,卸载重新安装吧又没法卸载干净,再装也装不上。要不就换版本安装,我还是喜欢用VC++6.0,找个免安装版解压就可以使用,方便快捷。