C/C++实战013:BOOL和bool的区别及MSB6006报错

本文深入探讨了精雕设备二次开发过程中遇到的BOOL类型问题,对比了BOOL与bool的区别,并分享了在使用Visual Studio编译时遇到的错误解决经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开始写北京精雕设备的二次开发,拿到开发包看了下精雕的提供的程序大部分都是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,找个免安装版解压就可以使用,方便快捷。

 

安装 报错npm WARN deprecated npmlog@4.1.2: This package is no longer supported. npm WARN deprecated are-we-there-yet@1.1.7: This package is no longer supported. npm WARN deprecated gauge@2.7.4: This package is no longer supported. npm ERR! code 1 npm ERR! path /Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime npm ERR! command failed npm ERR! command sh -c prebuild-install || node-gyp rebuild npm ERR! CXX(target) Release/obj.target/microtime/src/microtime.o npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@8.4.1 npm ERR! gyp info using node@16.14.0 | darwin | arm64 npm ERR! gyp info find Python using Python version 3.12.1 found at "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3" npm ERR! gyp info spawn /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', npm ERR! gyp info spawn args 'binding.gyp', npm ERR! gyp info spawn args '-f', npm ERR! gyp info spawn args 'make', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime/build/config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/common.gypi', npm ERR! gyp info spawn args '-Dlibrary=shared_library', npm ERR! gyp info spawn args '-Dvisibility=default', npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/yangjia/Library/Caches/node-gyp/16.14.0', npm ERR! gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/yangjia/Library/Caches/node-gyp/16.14.0/<(target_arch)/node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime', npm ERR! gyp info spawn args '-Dnode_engine=v8', npm ERR! gyp info spawn args '--depth=.', npm ERR! gyp info spawn args '--no-parallel', npm ERR! gyp info spawn args '--generator-output', npm ERR! gyp info spawn args 'build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! gyp info spawn make npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:22:1: error: no viable conversion from 'Local<v8::Context>' to 'v8::Isolate *' npm ERR! X(Boolean) npm ERR! ^~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:18:23: note: expanded from macro 'X' npm ERR! val->To ## TYPE(isolate->GetCurrentContext()) \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3086:37: note: passing argument to parameter 'isolate' here npm ERR! Local<Boolean> ToBoolean(Isolate* isolate) const; npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:22:1: error: no member named 'FromMaybe' in 'v8::Local<v8::Boolean>' npm ERR! X(Boolean) npm ERR! ^~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:19:12: note: expanded from macro 'X' npm ERR! .FromMaybe(v8::Local<v8::TYPE>())); \ npm ERR! ^ npm ERR! ../../nan/nan_converters_43_inl.h:40:1: error: no viable conversion from 'Local<v8::Context>' to 'v8::Isolate *' npm ERR! X(bool, Boolean) npm ERR! ^~~~~~~~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:37:29: note: expanded from macro 'X' npm ERR! return val->NAME ## Value(isolate->GetCurrentContext()); \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3096:30: note: passing argument to parameter 'isolate' here npm ERR! bool BooleanValue(Isolate* isolate) const; npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:40:1: error: no viable conversion from returned value of type 'bool' to function return type 'imp::ToFactory<bool>::return_t' (aka 'Maybe<bool>') npm ERR! X(bool, Boolean) npm ERR! ^~~~~~~~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:37:10: note: expanded from macro 'X' npm ERR! return val->NAME ## Value(isolate->GetCurrentContext()); \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10437:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'bool' to 'const v8::Maybe<bool> &' for 1st argument npm ERR! class Maybe { npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10437:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'bool' to 'v8::Maybe<bool> &&' for 1st argument npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10492:12: note: explicit constructor is not a candidate npm ERR! explicit Maybe(const T& t) : has_value_(true), value_(t) {} npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:223: npm ERR! In file included from ../../nan/nan_new.h:189: npm ERR! ../../nan/nan_implementation_12_inl.h:356:37: error: too few arguments to function call, expected 2, have 1 npm ERR! return v8::StringObject::New(value).As<v8::StringObject>(); npm ERR! ~~~~~~~~~~~~~~~~~~~~~ ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:6196:23: note: 'New' declared here npm ERR! static Local<Value> New(Isolate* isolate, Local<String> value); npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2722: npm ERR! ../../nan/nan_object_wrap.h:24:25: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object>' npm ERR! assert(persistent().IsNearDeath()); npm ERR! ~~~~~~~~~~~~ ^ npm ERR! /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:99:25: note: expanded from macro 'assert' npm ERR! (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2722: npm ERR! ../../nan/nan_object_wrap.h:127:26: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object>' npm ERR! assert(wrap->handle_.IsNearDeath()); npm ERR! ~~~~~~~~~~~~~ ^ npm ERR! /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:99:25: note: expanded from macro 'assert' npm ERR! (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2818: npm ERR! ../../nan/nan_typedarray_contents.h:34:43: warning: 'GetContents' is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations] npm ERR! data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset; npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:5614:3: note: 'GetContents' has been explicitly marked deprecated here npm ERR! V8_DEPRECATED("Use GetBackingStore. See http://crbug.com/v8/9908.") npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8config.h:454:35: note: expanded from macro 'V8_DEPRECATED' npm ERR! # define V8_DEPRECATED(message) [[deprecated(message)]] npm ERR! ^ npm ERR! ../src/microtime.cc:75:10: error: no matching member function for call to 'Set' npm ERR! array->Set(Nan::New<v8::Integer>(0), Nan::New<v8::Number>((double)t.tv_sec)); npm ERR! ~~~~~~~^~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3961:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3964:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index, npm ERR! ^ npm ERR! ../src/microtime.cc:76:10: error: no matching member function for call to 'Set' npm ERR! array->Set(Nan::New<v8::Integer>(1), Nan::New<v8::Number>((double)t.tv_usec)); npm ERR! ~~~~~~~^~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3961:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3964:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index, npm ERR! ^ npm ERR! 1 warning and 9 errors generated. npm ERR! make: *** [Release/obj.target/microtime/src/microtime.o] Error 1 npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2 npm ERR! gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:520:28) npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12) npm ERR! gyp ERR! System Darwin 22.6.0 npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" npm ERR! gyp ERR! cwd /Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime npm ERR! gyp ERR! node -v v16.14.0 npm ERR! gyp ERR! node-gyp -v v8.4.1 npm ERR! gyp ERR! not ok npm ERR! A complete log of this run can be found in: npm ERR! /Users/yangjia/.npm/_logs/2025-06-30T06_40_09_765Z-debug-0.log
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProgramNotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值