草庐IT

TEMPLATE_DEBUG

全部标签

c++ - 模板参数不明确 : could not deduce template argument

我正在做一些看起来像这样的包装器:#includetemplatevoidApply(void(T::*cb)(Value),T*obj,Valuev){(obj->*cb)(v);}classFoo{public:voidMyFunc(constint&i){std::cout我收到这个错误:应用:未找到匹配的重载函数。voidApply(void(__thiscallT::*)(Value),T*,Value):模板参数Value不明确,可能是int或constint&。voidApply(void(__thiscallT::*)(Value),T*,Value):无法从const

c++ - 为什么 Visual Studio 的 Debug模式 Step Into (F11) 有时不会进入某些函数内部?

我正在使用F11键(StepInto模式)调试给定的C++代码,以便了解调用代码中函数的精确顺序,我意识到它除非我在函数定义内的某行设置断点,否则永远不会进入某些函数。我的意思是,如果我从main方法调用一个函数,并且该函数在另一个.cpp中定义,我希望F11Debug模式逐步进入在函数内部以分析变量的变化。大多数时候它确实如此,但在某些情况下它只是执行函数而不进入它,然后跳转到main方法中的下一行。为什么会这样?示例:这是F11永远不会进入的函数:voidVirtualCamera::display(void){glClearColor(0.0f,0.0f,0.0f,1.0f);/

c++ -/MT 和/MD 构建崩溃,但仅当未附加调试器时才会崩溃 : how to debug?

这个问题在这里已经有了答案:Programonlycrashesasreleasebuild--howtodebug?(29个答案)关闭9年前。我有一个小型单线程C++应用程序,使用VisualStudio2005编译和链接,它使用boost(crc、program_options和tokenizer)、少量STL和其他各种系统头文件。(它的主要目的是读取.csv并生成自定义二进制.dat和配对的.h声明“解释”.dat格式的结构。)该工具在调试器之外运行时崩溃(NULL上的访问冲突),仅在发行版中。例如。按F5不会导致工具崩溃,Ctrl-F5会。当我重新连接调试器时,我得到了这个堆栈

c++ - boost 程序选项不适用于 GLIBCXX_DEBUG

我有以下示例代码:#include#includeintmain(intac,char*av[]){//Declarethesupportedoptions.boost::program_options::options_descriptiondesc("Allowedoptions");desc.add_options()("help","producehelpmessage");boost::program_options::variables_mapvm;boost::program_options::store(boost::program_options::parse_com

c++ - x64 构建 : error MSB8013: This project doesn't contain the Configuration and Platform combination of Debug|Win32

我正在尝试为具有许多解决方案(一些用于CI,一些用于开发人员)和数百个项目的复杂构建运行纯x64构建,并遇到“错误MSB8013:该项目不包含配置和Debug|Win32的平台组合”我已将其简化为一个简单的配置:解决方案A包含项目X和项目Y。项目X有一个项目引用项目Y。解决方案B包含也包含项目X。所有项目或解决方案都不包含Win32平台-它已被删除。当我构建解决方案B(作为x64)时,我收到errorMSB8013:Thisprojectdoesn'tcontaintheConfigurationandPlatformcombinationofDebug|Win32错误信息有时包含额外

android - Qt Android : Why is a QtApp-debug. apk 为发布版本创建?

我在发布版本中构建我的Qt/C++Android应用程序,但是生成了以下APK文件:Release/android-build/bin/QtApp-debug.apkRelease/android-build/bin/QtApp-debug-unaligned.apk我找到了thisquestion这意味着APK文件是在Debug模式下构建的,即使对于Release构建也是如此。那里的答案暗示发布版本只有在您拥有证书时才有可能。我按照那里的说明进行操作,实际上在创建证书后,我得到了这些文件:Release/android-build/bin/QtApp-release.apkRelea

c++ - "#define new DEBUG_NEW"和 "#undef THIS_FILE"等真的有必要吗?

当您创建新的MFC应用程序时,向导会在几乎每个CPP文件中创建以下代码块:#ifdef_DEBUG#definenewDEBUG_NEW#endif有时它还会添加:#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;如果这段代码是多余的,我想从我的CPP文件中删除它。我在VS2008上使用带有C++/CLI的MFC应用程序。从CPP中删除这段代码后,我尝试在Debug中运行,它似乎工作正常。"new"变量工作正常,没有泄漏,ASSERT对话框显示正确的文件名并跳转到有问题的行。谁能告诉我它的作用以及删除它是否安全? 最

c++ - Template Explicit Specialization 和普通函数有什么区别?

templatevoidmax(T&a,T&b){}//generictemplate#1templatevoidmax(char&c,char&d){}//templatespecializtion#2voidmax(char&c,char&d){}//ordinaryfunction#31、2、3有什么区别? 最佳答案 是一个模板函数是之前模板函数的完全特化(不重载!)是函数的重载这是来自C++CodingStandards:101Rules,Guidelines,andBestPractices的摘录:66)Don'tspec

c++ - 将配置从 Debug 更改为 Release 时出现链接错误

嗨我在VC++2008中有项目这个项目在Debug模式下编译没有错误但是当我尝试在Release模式下构建它时,出现以下链接错误。1>Linking...1>LIBCMTD.lib(dbgheap.obj):errorLNK2005:__heap_allocalreadydefinedinLIBCMT.lib(malloc.obj)1>LIBCMTD.lib(dbgheap.obj):errorLNK2005:__recallocalreadydefinedinLIBCMT.lib(recalloc.obj)1>LIBCMTD.lib(dbgheap.obj):errorLNK2005

c++ - Clang 与 MSVC : Treatment of template function prototypes

下面是一段测试代码,我分别用MSVC和Clang来对比编译结果。每个编译器的输出如下所示。MSVC假装未使用的模板声明甚至不存在。Clang产生错误。问题是,哪个编译器在这里最符合标准?我见过依赖MSVC行为的遗留生产代码,但我不确定它是否可以继续依赖。classS{structP{};};templateS::PBat(T);在MSVC10中干净地编译:E:\clangbuild\bin\Release>cl/c/nologotest.cpptest.cpp在Clang中产生错误:E:\clangbuild\bin\Release>clang++test.cpptest.cpp:9: