
C++
文章平均质量分 55
yanxiangtianji
这个作者很懒,什么都没留下…
展开
-
命令行中选择VC编译器版本
当使用Visual Studio Installer安装了多个版本的VC编译器时,可以使用 vcvarsall.bat 工具在命令行中加载指定版本和架构的工具链。原创 2023-03-09 08:18:05 · 1774 阅读 · 1 评论 -
C++ 静态成员与成员函数链接错误
关键知识:1,所有静态数据成员都必须在类外初始化,才能使用!2,静态成员初始化(定义)应放在对应的.cpp里面,而不是.h里面!3,定义与声明的区别:有“extern”关键字的必是声明,有初始值的必是定义,其余一般是定义。(1, all static member variables must be initialized!)(2, all initialization (de原创 2013-03-21 23:06:38 · 4925 阅读 · 0 评论 -
Boost库bind函数的嵌套调用
问题提出:我写了一个函数,它需要使用一个生成整数随机数的随机数发生器作为参数。然后写了一个函数来根据参数生成不同分布的随机数发生器,供前一个函数使用。我调用了boost库的一些基于特定概率分布的随机数生成函数,但是有很多函数的结果是double型的。我的函数将随机数发生器定义为boost::function类型。很明显那些生成double的函数不能直接通过bind operator()的方原创 2013-04-22 00:13:31 · 1827 阅读 · 0 评论 -
宏定义污染的解决方法。
问题:提要:mfc工程调用另一个基本c++工程出错(windows宏定义污染导致错误)我用基本的C++配合STL写了一个库,编译成静态库lib。又在同一个工作空间里面建立了个win32 console的工程,调用这个lib,一切正常。然后我想加个界面,又建立了个基于对话框的mfc工程,用一样的方法include静态库工程的头文件,居然说我原来那个工程的文件语法有错,原创 2013-04-07 10:54:28 · 2943 阅读 · 0 评论 -
使用C++11变长参数模板 处理任意长度、类型之参数实例
变长模板、变长参数是依靠C++11新引入的参数包的机制实现的。一个简单的例子是std::tuple的声明:template class tuple;这里的三个点“...”表示这个模板参数是变长的。有了这个强大的工具,我们可以编写更加丰富的函数,例如任意类型参数的printf等。由于这个技术还比较新,还没有见到成熟的用法用例,我把我尝试的一些结果总结如下,希望对大家有帮助。原创 2014-03-11 23:19:23 · 28963 阅读 · 5 评论 -
G++隐藏"bug"及应对:未特化的模板中的static_assert(false)的两种处理方式
C++11标准新引入的static_assert功能可以实现静态断言,是一个非常强大的模板元编程工具,配合SFINAE特效可以在编译期发现不符合预期的不合理特化,并且给出自定义的错误信息。但是不同编译器的实现却不尽相同,于是招致了一些不必要的麻烦。g++为了效率,在某些情况下会过早、甚至不必要地执行了static_assert断言,导致编译失败。本文给出了这种问题的发生条件、原因与解决方法。原创 2017-01-28 16:32:22 · 3432 阅读 · 1 评论 -
在VS Code中开启gdb的pretty-printer功能
VS Code中开启GDB的pretty-printer功能准备pretty-printerpretty-printer是干什么的众所周知,C++的STL容器的实现并不直观,直接使用gdb之类的debugger查看内存是需要周转多次才能看到具体的内容的。 在Visual Studio之类的IDE中内置了一些脚本,用来较为友好的显示容器内的元素。GDB的pretty-pri...原创 2018-06-05 11:44:30 · 12091 阅读 · 8 评论