gpt4 book ai didi

c++ - 如何禁用 Boost 概念检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:00 27 4
gpt4 key购买 nike

为了在 Windows 下使用 Visual Studio 2008 编译 C++ Net Lib 项目,我需要禁用概念检查(请参阅此线程:https://groups.google.com/forum/#!msg/cpp-netlib/G-hM25EnCWA/gdsHBaVfmggJ)

编译在 Release 中有效,但在 Debug 中无效(.cpp 编译失败)

我通过在包含客户端 header 之前定义 NDEBUG 来成功编译 header 。然而,当链接器想要链接到 Boost.system 库的发布版本时,这稍后会失败:而我正在使用调试。我收到此错误:

6>链接: fatal error LNK1104:无法打开文件“libboost_system-vc90-mt-1_50.lib”

我想用 BOOST_SYSTEM_NO_LIB 来防止这种情况,但它仍然想链接到发布版本(我的项目链接到'libboost_system-vc90-mt-gd-1_50.lib'(调试库))

在包含 header 之前是否有一个简单的宏来定义,它将禁用 Boost.ConceptCheck 东西,就像在 Release 构建中所做的那样?我没有在 Boost 文档中找到任何信息,也没有在头文件本身中找到任何信息。

非常感谢

盖坦

最佳答案

这是我会做的:

#include <boost/concept/assert.hpp>
// redefine concept assert, suppress the warning etc.
#undef BOOST_CONCEPT_ASSERT
#define BOOST_CONCEPT_ASSERT(Model)
#include <boost/concept_check.hpp>

struct not_an_iterator
{};


int main()
{
BOOST_CONCEPT_ASSERT((InputIterator<not_an_iterator>));
return 0;
}

这将使 concept_assert 什么都不做,但我担心它不会进行以防止您的链接器错误,这些错误看起来很晦涩。

关于c++ - 如何禁用 Boost 概念检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13930894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com