![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
summer_R
这个作者很懒,什么都没留下…
展开
-
vs提供的msvc编译器 cl.exe 选项说明和官方文档链接 - 这里介绍下MD MDd MT MTd的问题
重要的是各个库的这个选项需要保持一致。不然编译链接会出现libcmt库冲突(虽然你可以设置忽略这个冲突)。/MTd 编译以使用 LIBCMTD.lib 创建调试多线程可执行文件。/MDd 编译以使用 MSVCRTD.lib 创建调试多线程 DLL。/MT 编译以使用 LIBCMT.lib 创建多线程可执行文件。/MD 编译以使用 MSVCRT.lib 创建多线程 DLL。可以将 / 换成 - 都是可以的哈。一般生成dll用MDd和MD。一般生成lib用MD和MTd。但是其实并不是绝对的哈。.........原创 2022-08-05 17:21:44 · 542 阅读 · 0 评论 -
如何解决vs中无法使用utf8文件的问题 请将该文件保存为 Unicode 格式以防止数据丢失
为什么utf8不行,utf8withbom就可以呢,仅仅是因为vs不认识utf8编码,所以把utf8编码的文件当作默认的ansi编码文件,这个时候就会出现上述报错。但是utf8withbom的编码和gbk的编码vs都是认识的,所以就没有问题。改变控制台的编码,其他方式的话可以按照c++的国际化方式进行编码转换。在深入理解c++11一书中有说两个字符集,一个源码字符集,一个编码字符集(在msvc编译器文档里面叫做执行字符集)。首先最容易的解决方式就是改文件编码为gbk,或者utf-8withbom。.....原创 2022-08-05 17:11:41 · 4351 阅读 · 0 评论 -
$clang-format -style=Google -dump-config > ./GoogleClangFormat 可以导出默认设置
clang-format -style=Google -dump-config > ./GoogleClangFormat 可以导出默认设置。转载 2022-08-02 17:37:30 · 467 阅读 · 0 评论 -
在win平台如何快速找到无法解析的外部符号在哪个库
errorLNK2019无法解析的外部符号__imp_PathCchCanonicalizeEx,函数canonicalize中引用了该符号。进入https//docs.microsoft.com/en-us/documentation/这个网址输入缺少的链接。找到Requirements栏可以看到相关内容。找到相关的链接查看说明,一般是第一个。......原创 2022-08-01 14:30:33 · 191 阅读 · 0 评论 -
友元关系无法继承的说明,func是A的友元,B继承A,func不能访问B的private,将B转换为A是可以访问的,模板友元中遇见的问题说明。
class VA;class S { public: void f(VA* p);};template <typename T>class ST { public: void f(VA* p); void f2(T* a, VA* p);};class VA { friend void S::f(VA* p); template <typename T> friend void ST<T>::f(VA* p); templ原创 2021-12-30 11:26:41 · 3407 阅读 · 0 评论 -
只有声明没有定义的虚函数类也无法实例化 ndefined reference to `vtable 以及与纯虚函数区别,虚析构函数也是一样的需要定义
class A { public: A() {} virtual ~A() {} virtual void f();};int main() { A* a = new A(); return 0;}/usr/bin/ld: /tmp/ccc31LMa.o: warning: relocation against `_ZTV1A' in read-only section `.text._ZN1AC2Ev[_ZN1AC5Ev]'/usr/bin/ld: /tmp/ccc31原创 2021-12-27 17:02:33 · 1174 阅读 · 0 评论 -
dynamic_cast 是动态强制类型转换的意思,它将基类的指针或引用安全地转换成派生类的指针或引用。 dynamic_pointer_cast 与dynamic_cast类似,将基类的智能指针转
哈哈原创 2021-12-27 12:12:08 · 3255 阅读 · 0 评论 -
关于基类指针返回值的重载,不能基于智能指针返回值重载o
class C { public: virtual C f1() { return C(); } virtual C* f2() { cout << 1 << endl; return new C(); }};class D : public C { public: virtual D f1() override { return D(); }};检查f1的重载是明显有问题的,如下。因为这玩意不是个指针。返回类型与重写虚拟函数 “C:原创 2021-12-27 11:58:20 · 435 阅读 · 0 评论 -
关于this的智能指针以及函数内new的动态内存如何释放,vector会自动析构指针吗?如何使用enable_shared_from_this以及shared_from_this
class B { private: int* i = nullptr; public: B() : i(new int(5)) {} ~B() { cout << "exe ~B" << endl; } void f() { shared_ptr<B> v = make_shared<B>(*this); }};首先很明确的一点 new出来的东西不delete是不会释放的void bf1() { B* b = new B(原创 2021-12-27 10:13:56 · 731 阅读 · 0 评论 -
关于 typedef cosnt * & 的解释问题
class A { public: A() {} ~A() {}};using A1 = const A*;using A2 = A*;int main() { A1 a1; const A2 a2; const A* aa1; A* const aa2; return 0;}c.cpp: In function ‘int main()’:c.cpp:15:12: error: uninitialized ‘const a2’ [-fpermissive]原创 2021-12-24 15:04:21 · 1704 阅读 · 0 评论 -
关于cosnt的函数重载
顶层的const是会被忽略的 无法重载 重复定义class A { public: void f(int* a) {} void f(int* const a) {} ~A() {}};error: ‘void A::f(int*)’ cannot be overloaded with ‘void A::f(int*)’ 7 | void f(int* const a) {}底层的const是可以重载的class A { public: void f(int*原创 2021-12-24 14:23:37 · 2452 阅读 · 0 评论 -
类内初始值是自身类指针或者构造函数初始化自身类的指针会导致无限递归然后完蛋
class A { private: A* a = new A(); public: A() {} ~A() {}};int main() { A* a = new A(); return 0;}这里编译没问题可以通过但是运行失败 就是因为类内初始值问题换成shareptr也是一样的会运行失败这里可以初始值为nullptr 然后构造函数进行初始化...原创 2021-12-24 14:03:22 · 72 阅读 · 0 评论 -
模板类的模板成员函数的友元声明以及一些错误处理 too many template-parameter-lists expected initializer before ‘<’ token
class A { template <typename T> template <typename... Args> friend std::shared_ptr<T> B<T>::a1(Args&&... args); template <typename T> friend void B<T>::b1(std::shared_ptr<T>& v);};template原创 2021-12-23 11:27:35 · 1743 阅读 · 0 评论 -
编译出现 warn_unused_result -Wunused-result 如何解决
ignoring return value of ‘int RUN_ALL_TESTS()’ declared with attribute ‘warn_unused_result’ [-Wunused-result]根据这个提示可以猜测编译的传递-Wno-unused-result可以解决,确实解决了原创 2021-12-02 16:49:08 · 5852 阅读 · 2 评论 -
关于cin之后使用clear无法输入的问题
clear只是置空了fail的标记但是之前的错误输入没有清理掉导致cin无法正常使用请使用ignore清理网上面一大堆说使用sync…真的是无语…这个是无效的错误展示cin.clear();cin.sync();正确展示cin.clear();cin.ignore();...原创 2021-11-15 21:17:07 · 569 阅读 · 2 评论 -
修改obj的生成位置后为什么make总是无法增量编译.............
比如$(OBJS): %.o:%.cpp $(CC) ... -o $(OBJSDIR)/$@因为 $(OBJS): %.o:%.cpp 的时候会发现这个.o文件不存在(因为我们上次生成的时候位置不在这里)既然不存在那就要重新编译只要 $(OBJS): %.o:%.cpp 中的.o的位置和命令生成.o是一个位置 那就可以增量编译了比如我们可以这样一开始就搞好.o的位置OBJS = $(patsubst %.cpp, $(OBJSDIR)/%.o, $(FILES))然后这样 就可以了原创 2020-09-16 11:22:54 · 411 阅读 · 0 评论 -
Linux Debian10 如何安装jemalloc 以及 Newer version of jemalloc required 问题
官网下载就差不多了1663 cd jemalloc-dev/1664 ls1665 code README 1666 ls1667 ./autogen.sh 1668 make1669 sudo make install1672 history原创 2020-09-13 16:14:20 · 501 阅读 · 0 评论 -
protobuf 手册
Style Guideproto文件风格指南与原来的proto文件保持一致Standard file formatting80个字符宽度缩进使用2个空格File structure文件名 小写字母下划线 lower_snake_case.proto建议的域顺序如下License header (if applicable) 一些证书说明File overview 文件内容说明概览注释等等SyntaxPackageImports (sorted)File options原创 2020-09-02 23:56:15 · 813 阅读 · 0 评论 -
Linux Debian10 如何安装googletest 以及如何简单使用TEST_F和--gtest_list_tests等等
github下载之后解压 下面的ls步骤其实是多余的进入googletest-mastercd ./googletest-master/创建一个build文件夹并进入此文件夹mkdir buildcd ./build/执行cmake(配置文件在上一层目录)cmake ../ls查看此文件夹变化执行make和sudo make installmakesudo make installls查看此文件夹变化假设编译出来的文件叫做 a.exe执行 a.exe.原创 2020-08-09 19:12:40 · 640 阅读 · 0 评论 -
折腾gcc/g++链接时.o文件及库的顺序问题
转载自这里 请查看原文转载自这里 请查看原文转载自这里 请查看原文转载自这里 请查看原文转载自这里 请查看原文 折腾gcc/g++链接时.o文件及库的顺序问题Table of Contents1 gcc/g++链接时.o文件以及库的顺序问题1.1 写在前面1.2 几个名词1.3 技术铺垫1.3.1 编译动态库时的符号解析1.3.2 linux下查看一个可执行文件或动态库依赖哪些动态库的办法1转载 2020-08-09 18:29:40 · 1494 阅读 · 1 评论 -
c++静态库动态库的编译使用以及一些常见的问题和注意事项
spdlog动态链接库记录gcc -DSPDLOG_COMPILED_LIB ./third/spdlog_1.7.0/src/*.cpp -I./third/spdlog_1.7.0/include/ -fPIC -shared -o ./libs/libspdlog.so-L -l的时候可能需要注意顺序cannot open shared object file: No such file or directory原创 2020-08-09 18:22:48 · 1932 阅读 · 0 评论 -
基本不用模板 一用就出错 这里记录一些常见模板错误
一些其他常见的报错总结模板都要写在h中 可以如同-inl.h一样搞两个或者多个h文件可以在模板的文件的末尾使用using实例化一个模板这样外部用起来也方便一点using basic_file_sink_mt = basic_file_sink<std::mutex>; 也可以避免模板在多个地方实例化类模板编程时无法使用virtual的虚函数的 但是纯虚函数可以 具体为啥自己百度下undefined reference to `Test::f()’ collect2: er原创 2020-08-05 17:58:08 · 297 阅读 · 0 评论 -
从开源库中看到的一些小技巧总结以及一些常见的报错 一些常见的报错
一些命名等等相关tweakme.h tweak的意思有调整的意思在spdlog中这个文件定义了一些提供选项的宏定义cfg 控制流图(Control flow graph)是用在编译器中的一个抽象数据结构 spdlog中有一个cfg的目录loc 搜到的一个百科说明LOC对于图片、Flash等非文本文件统计文件数量、文件大小;和对于文本文件统计文件数量、文本行数、字符数;可以取名的时候用一下loc 比如spdlog中有一个source_loc这个对象记录了函数名行号文件名一般inline的函数可以原创 2020-08-05 17:51:29 · 445 阅读 · 3 评论 -
新手看spdlog源码做笔记以及附上简单使用手册
version 1.7.0tweakme.h 中的一些宏定义SPDLOG_CLOCK_COARSE如果Linux开启 相比常规时钟获得更快的速度但是精确度会稍微降低SPDLOG_NO_THREAD_ID如果开启 每次的log call调用获取thread id会返回0SPDLOG_NO_TLS如果开启 可以避免spdlog使用线程本地空间 如果你的程序是多线程的可以防止未定义thread idsSPDLOG_NO_ATOMIC_LEVELS如果开启 如同字面意思不使用原子性的的log原创 2020-08-05 00:05:17 · 2433 阅读 · 0 评论 -
c++老爹介绍的命名和布局书写规范
其实都来自这里 这文档里面的东西多的不得了 有空自己看吧没找着怎么对文件进行命名的规则 稍微参考下其他的文档和google c++ style小写字母+下划线+数字基本结论是这样注释也搞个空格自定义类型 驼峰 每个首字母大写其他 数字+小写字母+下划线全大写表示宏在声明类时 使用以下顺序类型:类、枚举和别名(使用)构造函数,赋值函数,析构函数功能接口等等函数数据按照 ...原创 2020-04-22 23:29:06 · 224 阅读 · 0 评论 -
c++超级容易超级容易忘记和易错的点记录一下随时温习一下 static inline noexcept override 到底写在哪里
这部分摘抄自这里文件结束符CTRL+D(UNIX) CTRL+Z(WINDOWS)默认状态下 const 对象仅在文件内有效 详见P54 多个文件共享const可以使用 extern const这部分摘抄自这里inline和constexpr函数通常放在头文件内定义 通常inline加在定义前这部分摘抄自这里static关键字只能在类内的声明处出现因为静态的数据成员不...原创 2020-04-22 20:46:00 · 377 阅读 · 0 评论 -
c++ primer c++11 最重要的继承派生多态来啦 还有利器模板泛型编程 15-16
1516原创 2020-04-20 20:21:45 · 186 阅读 · 0 评论 -
c++ primer c++11 拷贝控制 移动构造 移动赋值 各种运算符重载 实例代码 在也不怕不会用啦 13-14
1314原创 2020-04-18 23:39:48 · 253 阅读 · 0 评论 -
c++ primer c++11 动态内存指针指针真麻烦哇 12
12原创 2020-04-16 18:41:56 · 181 阅读 · 0 评论 -
c++ primer c++11 IO库 顺序容器 vector 关联容器map 简单的泛型算法 还有lambda的本质 考点在这08-11
08091011原创 2020-04-16 00:32:10 · 174 阅读 · 0 评论 -
c++ primer c++11 类的基础介绍(构造 拷贝先浅谈一下)和那个看起来就很麻烦的友员简介(后续深入哈哈) 07
07定义在类内部的函数是隐式的inline函数this是一个指向类类型的非常量版本的常量指针所以this不能绑定到一个常量对象上 所以不能再常量对象上调用普通的成员函数所以在成员函数的列表之后加上const关键字 表示this是一个指向常量的指针像这样使用const的成员函数被称作常量成员函数所以常量对象只能调用常量成员函数首先编译成员声明 再编译函数体 所以函数体可以...原创 2020-04-12 16:32:15 · 159 阅读 · 0 评论 -
c++ primer c++11 函数知识点必备ooo 06
0607原创 2020-04-11 22:48:21 · 151 阅读 · 0 评论 -
c++ primer c++11 字符串 向量 数组 表达式 运算符优先级结合律 各种语句基本写法 03-05
030405原创 2020-04-10 18:44:13 · 208 阅读 · 0 评论 -
c++ primer c++11 不能不知道的基础知识点哦 01-02
打算打。。。01. 后缀 .cc .cxx 。cpp .cp .C02. 四个IO对象 cin cout cerr clog03. #include <标准库头文件> #include "自定义头文件"04. 操纵符 endl 效果 结束当前行 并将于设备关联的缓冲区中的内容刷新到设备中 刷新缓冲器的操作可以保证将目前为止程序所产生的所有输出都真正写入到输入流中 ...原创 2020-04-08 21:04:19 · 175 阅读 · 0 评论 -
gcc 编译 cpp 报错 以及 gcc或g++ 如何指定c++版本
gcc 编译cpp时会有链接错误 用g++编译cpp则很稳gcc test.cpp -lstdc++ 就行了指定c++版本 可以用 -std=xxx 指定-std=c++98-std=c++99-std=c++11-std=c++14-std=c++17原创 2020-04-08 17:43:36 · 10719 阅读 · 0 评论 -
WIN10 vscode 配置 c++
官文参考安装mingwc_cpp_properties.json这个文件主要配置智能提示补全等等功能比如可以增加不在当前工作空间的一些库的路径或者你自己编写的一些头文件路径用于自动补全等{ "configurations": [ { "name": "Linux", "includePath": [ ...原创 2020-02-21 10:39:26 · 1272 阅读 · 0 评论 -
c++编程规范 C++语言之父Bjarne Stroustrup
C++ Core Guidelines (Bjarne Stroustrup Herb Sutter)P: Philosophy见名思意尽量使用标准库可以编译时检查的尽量编译时检查 比如使用static_assert等等资源一定要释放const的合理使用使用合适的工具以及一些工具库避免重复造轮子P.1: Express ideas directly in code所见即所得...原创 2020-01-08 14:51:26 · 683 阅读 · 0 评论 -
Debian10安装gcc,g++,gdb,cmake,boost
安装gccapt-get install gcc-8安装g++apt-get install g++-8安装gdb这里没有直接安装apt-get install gdb 而是在 debian包 下载了较新的版本进行安装apt-get install ./gdb_8.2.1-2+b3_amd64.deb一切进行其实都很顺利并没有出现各种乱七八糟的问题要是出现了 直接...原创 2019-12-07 19:33:07 · 4416 阅读 · 0 评论 -
WIN10通过mingw使用gcc g++ gdb以及安装cmake
mingw 的 sourceforge 路径如下这个是 mingw-w64/files/ 路径这个是 mingw-w64/files/…/ 一路按照最多下载点进去的路径如果选择下载 Online Installer 这个exe安装程序会比较繁琐 需要在安装的时候选择 gcc g++ 等等 并且比较缓慢直接下载压缩包就没有这么麻烦 配置好环境变量就可以使用了 目前我选择的是 x86_64-8...原创 2019-12-06 22:34:51 · 992 阅读 · 10 评论 -
codelite 设置
进入设置界面 菜单栏—settings—preferences黑色加粗部分是修改项 其他项是默认设置Guilds 设置如下 其中 EOL Mode 忘记改了 应该要设置成 Unix (LF)Indentation 设置未修改 这个是修改用Tab还是Space的Right Margin Indicator 设置未修改 这个是修改右边的80个字符的边界线的Save Options 设置如下...原创 2019-10-31 01:04:48 · 3128 阅读 · 0 评论