![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
追梦-北极星
这个作者很懒,什么都没留下…
展开
-
C语言参数传递:va_start
https://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.htmlC语言的字符串处理函数大全:https://blog.csdn.net/xfjjs_net/article/details/79329030原创 2018-12-04 14:50:26 · 288 阅读 · 0 评论 -
ngix源码架构学习
http://tengine.taobao.org/book/chapter_10.htmlngix的工作模型和工作原理:https://www.cnblogs.com/wajika/p/6581200.htmlngix的线程池:https://www.cnblogs.com/sxhlinux/p/6906490.htmlngix的内存池:https://www.cnblo...原创 2019-04-27 15:41:39 · 190 阅读 · 1 评论 -
linux进程生成core文件
1.在linux终端设置core文件的全局开关ulimit -c 1024,全局开启大小,默认为02.设置第一步后,如果某些进程挂掉的时候还是未生成core文件, 则需要将进程的core文件开关也开启,开启开关为:cat /proc/pid/limits里的Max core file3.也可以在内核暴力将所有进程的core文件开关都开启 修改位置为: ...原创 2019-03-04 10:25:33 · 2334 阅读 · 1 评论 -
OOp学习的记录
https://blog.csdn.net/android_huber/article/details/7580513http://www.cnblogs.com/clover-toeic/p/3755401.html原创 2018-12-20 15:09:57 · 199 阅读 · 1 评论 -
select,pselect,poll,epoll的多路复用
转自:https://www.cnblogs.com/jeakeven/p/5435916.html原创 2019-02-12 17:54:38 · 228 阅读 · 0 评论 -
编译工具链介绍
参考:交叉编译工具链介绍_五里之南的博客-CSDN博客_交叉编译链是什么GNU Binutils:一般在解压后的交叉编译工具链bin目录下会有很多可执行程序工具ld :GNU链接器。as :GNU汇编器。addr2line:将地址转换为文件名和行号。ar:用于创建,修改和提取档案的实用程序。nm:列出目标文件中的符号。objcopy:复制并转换目标文件。objdump:显示目标文件中的信息。readelf:显示来自任何ELF格式对象文件的信息。size:列出的对象或归档文件的部原创 2022-03-29 16:53:49 · 2857 阅读 · 0 评论 -
system函数返回值
背景:工作中遇到一个system函数执行udhcp失败返回256的问题,一开始以为这个函数有问题,经过一番分析,查到system返回256,相当于shell命令返回值为1std::system - cppreference.comhttps://en.cppreference.com/w/cpp/utility/program/system返回值可以使用WEXITSTATUS 解析的Return valueImplementation-defined value. Ifcomma.原创 2021-12-01 15:29:47 · 2924 阅读 · 0 评论 -
linux C++ protobuffer生成命令
自己的做法:把import的proto复制到当前需要自动生成的proto同级目录,-I应该是可以指定import 所在的路径的protoc -I=. --cpp_out=./ ./ipc_param.proto参考:https://developers.google.com/protocol-buffers/docs/reference/cpp-generated...原创 2021-11-18 17:30:54 · 2020 阅读 · 0 评论 -
JNI双向调用(Java调C++/C++调JAVA)
C++调JAVAJAVA调C++原创 2021-10-21 19:05:31 · 150 阅读 · 0 评论 -
C++常见编译问题
1、error2039: "tie":不是std的成员此时应该添加<iostream>就可以了,如果tie还属于其他库文件,再添加一下就行了出现的场景:重构时,去掉了某些文件,导致文件头列表里少头文件导致;原创 2021-10-12 15:35:57 · 149 阅读 · 0 评论 -
std::enable_shared_from_this 错误:error: expected template-name before ‘<’ token
在重构过程中,为了避免别人正在修改的模块影响自己,把一些模块屏蔽了,结果出现了下面的错误信息,如下:../runtime/idm_client_proc_v2.h:70:86: error: expected template-name before ‘<’ token 70 | class CallbackWrapper : public idm::IIDMClient, public std::enable_shared_from_this<CallbackWrapper&g...原创 2021-09-15 17:22:50 · 683 阅读 · 0 评论 -
linux使用nanopb
nanopb官方github:https://github.com/nanopb/nanopb指南上写的protoc不是google C++的protoc,而是generator里的protc python脚本直接用指南里的这个生成C的protobuffer,会显示出错,缺少python-protobufferpython generator/nanopb_generator.py myprotocol.proto # For source checkout...原创 2021-09-01 17:06:09 · 727 阅读 · 0 评论 -
std::transform和 std::for_each
目录std::transform用法:std::for_each用法:std::transform 和 std::for_each 有什么区别?std::transform用法:transform() 可以将函数应用到序列的元素上,并将这个函数返回的值保存到另一个序列中,它返回的迭代器指向输出序列所保存的最后一个元素的下一个位置。 每个元素都可以在放进一个函数里做对应的修改例子:参考:http://c.biancheng.net/view/623.htmlhttp原创 2021-08-16 20:22:18 · 588 阅读 · 0 评论 -
C++ hash函数
目录hash函数介绍:用途:Hash函数的特性:参考:hash函数介绍:哈希函数,又叫散列函数、散列算法,是一种从任何一种数据中创建小的数字“指纹”(也叫做摘要)的方法用途:1.快速验证: 生成各种数据的摘要,当比较两个数据是否相等时,只需要比较他们的摘要就可以了2.防止篡改 :传递一个数据,要保证它在传递过程中不被篡改,只需要同时传递它的摘要即可。收到数据的人将这个数据重新生成摘要,然后比较传递的摘要和生成的摘要是否相等,如果相等,则说明数据在传递过程中没有被篡改.原创 2021-07-30 15:16:40 · 2543 阅读 · 0 评论 -
C++的class回调
https://blog.csdn.net/SweetTool/article/details/72811638原创 2020-06-02 15:17:02 · 181 阅读 · 0 评论 -
visual studio code的插件集锦
1、C++自动生成注释工具:Doxygen Documentation Generator原创 2020-12-09 20:51:34 · 87 阅读 · 0 评论 -
valgrind交叉编译记录
VALGRIND_LIB=/tmp/valgrind/libexec/valgrind原创 2021-06-08 16:57:39 · 454 阅读 · 1 评论 -
ubuntu使用工具链arm-buildroot-linux-uclibcgnueabihf-4.9.4-uclibc-1.0.31时出现libiconv.so.2找不到
libiconv.so.2找不到参考:https://blog.csdn.net/chinawangfei/article/details/51219740https://blog.csdn.net/adocir/article/details/109989583libconv的下载地址:https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz$ ./configure --prefix=/usr/local$ ma..原创 2021-04-16 15:41:12 · 1326 阅读 · 1 评论 -
SDL库移植记录
资料:中文教程:https://tjumyk.github.io/sdl-tutorial-cn/contents.html英文教程:https://lazyfoo.net/tutorials/SDL/index.phpSDL官网:https://www.libsdl.org/index.phpSDL官网的Document wiki:http://wiki.libsdl.org/FrontPageSDL库的git仓库:https://github.com/libsdl-org/SDL/t原创 2021-04-07 20:36:15 · 369 阅读 · 0 评论 -
curl库移植时出现:fatal error: stropts.h: 没有那个文件或目录
经过搜索资料:出现这个错误说明系统不支持STREAMS,但是现在大部分系统都不支持,所以我们遇到这个问题只需要编译通过即可。有两种方法:1、在/usr/include文件里建立一个空的stropts.h文件,只为了编译通过2、在开源库里,一般可以指定不编译这个文件,在源码里一般这样使用的,我们只需要定义一个编译宏,值为0,就可以不编译stropts.h这个文件了#if HAVE_STROPTS_H#include <stropts.h>#endif编译的时候添加原创 2021-04-07 17:49:41 · 1977 阅读 · 0 评论 -
C++格式化输出
背景:一开始开发C++都是用的C语言的格式化sprintf,后来了解到可以通过cout和stringstream个格式化输出终端格式化:setw(int):为设置宽度setfill(char):为填充的字符串都在iomanip的头文件中#include <iostream>#include <iomanip>using namespace std; void main(){ int data = 0x01020304; cout <<原创 2021-03-05 20:11:21 · 522 阅读 · 0 评论 -
C++获取毫秒时间
获取时间差:毫秒#include <chrono> std::chrono::time_point<std::chrono::system_clock> server_create_time_ = std::chrono::system_clock::now();auto current_time = std::chrono::system_clock::now();std::chrono::duration<.原创 2021-03-05 20:04:31 · 817 阅读 · 0 评论 -
C++代码风格和注释
1、注释 :使用Doxygen注释格式,可以方便的生成文档https://cedar-renjun.github.io/2014/03/21/learn-doxygen-in-10-minutes/原创 2021-03-05 16:56:58 · 95 阅读 · 0 评论 -
C++关键词使用的注意事项
1、staticstatic数据成员必须初始化static成员的初始化要在实现中进行,不能在头文件进行。原创 2021-01-28 16:56:02 · 74 阅读 · 0 评论 -
工作中gn编译出现的-pthread和-lpthread的问题
gn编译中,因为涉及多平台的编译,windows、cortex-a9、cortex-a7-poky在生成一个动态库的时候都没问题,但是当在x86-64平台编译时,却一直提示:hidden symbol `pthread_atfork' in /opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../aarch64-linux-gnu/libc/usr/lib/aarch64-linux-gnu/libpthread_nonshared.a(原创 2021-01-27 21:08:54 · 1196 阅读 · 0 评论 -
C++调试-visual studio
1、监视窗口用一句话可以概括具体的错误在Visual C++ 中,可以在监视窗口添加$err,hr一行来实时现实错误。调试过程中,该项相当于在每次调用API函数之后调用GetLastError函数。其值由两部分组成,一个是错误代码(十六进制),另一个是错误代码所对应的文本提示。该方法支持多语言。...原创 2021-01-26 17:05:16 · 99 阅读 · 0 评论 -
gdb调试
1、调试的程序有多个源文件目录,如何在某个点加断点: 这个暂时没看到如何直接用list命令查看库文件的源码,但是可以用b命令直接制定某个文件的某一行设置为断点:原创 2020-11-26 16:00:46 · 83 阅读 · 0 评论 -
constexpr关键词
https://en.cppreference.com/w/cpp/language/constexprconstexpr specifier(since C++11)constexpr- specifies that the value of a variable or function can appear inconstant expressions constant expressions: Defines anexpressionthat can be evalu...原创 2020-11-19 19:57:31 · 225 阅读 · 1 评论 -
自旋锁和互斥锁的区别
原理:未获取自旋锁的线程会一直尝试加锁知道成功获取自旋锁,期间不允许其他线程运行未获取互斥锁的线程会休眠,使得其他线程可以马上运行。但是线程的休眠和唤醒是相当昂贵的操作,需要大量的CPU指令,会花费很多时间。互斥锁的存在的问题:如何只是锁住很短的一段时间,用来使线程休眠和唤醒的时间会比该线程睡眠的时间还要长,比自旋锁轮询的时间还长自旋锁的问题:自旋锁被持有时间太长,其他尝试获取自旋锁的线程会一直处于轮询自旋锁的状态,非常浪费CPU时间,这个时候让该线程睡眠会是更好的选择。自旋锁的使.原创 2020-11-10 18:54:16 · 1044 阅读 · 0 评论 -
linux下protobuffer编译
protobuffer下载地址:选取自己需要的版本,版本双方不一致会出错https://github.com/protocolbuffers/protobuf编译:执行autogen.sh脚本,生成configure文件$ ./autogen.sh 执行命令:$ ./configure && make && make check && make install编译完成后,可能出现的问题:1、make instal...原创 2020-11-02 19:25:26 · 228 阅读 · 0 评论 -
C++参数为string引用时,如何直接接收字符串
#include <iostream>using namespace std;void func(string& param) { cout << "param = " << param << endl;}int main() { func(string("aa")); return 0;}mi@mi-OptiPlex-7040:~/work/test$ g++ test_reference.cc -std=c++11...原创 2020-10-23 11:13:30 · 909 阅读 · 0 评论 -
shared_ptr的几个思考
1、因为涉及到C++转换C接口,就想着能不能简单点,把shared_ptr转换为void *作为一个handle 结果证明:编译错误 test_shared_ptr.cc: In function ‘void convert_shared_ptr_to_void()’:test_shared_ptr.cc:26:14: error: cannot convert ‘std::shared_ptr<Test>’ to ‘void*’ in initializati...原创 2020-10-23 11:00:15 · 725 阅读 · 0 评论 -
C++编译问题记录
1、未定义的引用下面的情况是忘了在.cc文件里的方法实现前加类名::[337/355] link test_service_demoFAILED: test_service_demo c++ -rdynamic -Wl,-rpath,\$ORIGIN -L../3rdparty/libs/linux/x64/debug -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L. @test_service_demo.rsp -lpthrea原创 2020-10-14 11:52:34 · 283 阅读 · 1 评论 -
error: ‘shared_ptr‘ was not declared in this scope
1、You need to add the memory header at the beginning of your file.#include <memory>2、if above solution does not work even after include of header, please ensure that to compiler you are passing argument --std=c++11原创 2020-08-26 20:50:27 · 2230 阅读 · 0 评论 -
C++ reference学习
C++ reference :1、模板里的通用类型class和typename是否不同?答:两者没有什么不同,是同义词,如下如官方说明It makes no difference whether the generic type is specified with keywordclassor keywordtypenamein the template argument list (they are 100% synonyms in template declarations)...原创 2020-08-07 10:57:51 · 120 阅读 · 0 评论 -
C++:没有找到重载的成员函数 可能的一个原因
背景:在C++接口添加一个string参数,本以为超级简单的问题,语法都没问题,但是一直报下面的问题,很抓狂最后解决:还挺搞笑的,在visual studio code写的代码,当时还看到client_api.h没有M这个修改的标志很奇怪,查了好一会儿,最终发现,这个文件没有保存。d:\client_api.cc(29): error C2511: “ClientApi::ClientApi(std::string)”:“ClientApi”中没有找到重载的成员函数d:\client_api.h(原创 2020-07-03 15:03:34 · 5848 阅读 · 0 评论 -
protobuffer的嵌套使用
1、定义嵌套protobuffermessage ***IpaddressPair{ bytes local_ip = 1; bytes remote_ip = 2;}message ***ConnectionStatus{ bool connected = 1; bytes peer_id = 2; ***IpaddressPair ipaddr_pair = 3;}2、使用这个mutable_ipaddr_pair函数会在类里new一个***IpaddressPai原创 2020-06-11 21:20:16 · 1380 阅读 · 0 评论 -
C/C++项目
https://zhuanlan.zhihu.com/p/23047091原创 2020-06-02 11:56:43 · 82 阅读 · 0 评论