用PC-Lint测试Boost的程序时需要在.LNT文件中附加的定义

在使用PC-Lint测试包含boost::thread库的代码时,遇到错误提示“Threading support unavaliable...”。错误源于Boost在某些条件下自动定义了BOOST_DISABLE_THREADS宏。通过分析发现,当未定义_MSC_EXTENSIONS宏时,Boost会禁用Win32 API的多线程支持。为解决问题,在.LNT文件中添加“-d_MSC_EXTENSIONS”和“-d_MT”的宏定义,分别使Boost启用Win32 API和多线程支持,从而成功进行测试。

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

 

  我在尝试用PC-Lint检测使用了boost::thread库的代码时,总会报错:

#  error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"

  这现这个错误是因为定义了“ BOOST_DISABLE_THREADS”。而我是没有定义此宏的,也就是说,这个宏是boost代码中在满足某个条件时自动被定义上的。那是哪里呢?通过分析,终于发现了这样几行代码: 

// disable Win32 API's if compiler extentions are

// turned off:

//

#ifndef _MSC_EXTENSIONS

#  define BOOST_DISABLE_WIN32

#endif

 

  也就是 ,如果没有定义“_MSC_EXTENSIONS”宏,则boost就会自动定义上这个BOOST_DISABLE_WIN32宏。于是,尝试在.LNT文件中增加“ -d_MSC_EXTENSIONS”,此故障排除。

  但继续测试,仍然会有另一个错误:

 

#  error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"

 

  原因是boost认为被测试的程序没有启动多线程支持。这时,只需要在.LNT文件中增加_MT宏的定义即可:

 -d_MT。

 

  总结一下,总之如果希望在PC-Lite中成功测试使用了Boost库的源代码,则应该在.LNT文件中增加以下两行宏定义妈可:

-d_MSC_EXTENSIONS
-d_MT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值