![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
yuanlulu
做过嵌入式Linux开发、深度学习平台开发。擅长c++和python。
展开
-
c++中使用dlopen加载动态库中带类参数的函数
我一直都知道dlopen的大概用法。但是dlopen毕竟是c语言的函数,能否加载带c++类型传参的函数,我有点不确定。今天有空验证了下,是可以的。extern “C”只影响了函数在动态库中的Name Mangling,并不排斥参数和回参使用c++类型。代码比较 简单,一目了然。原创 2023-02-17 15:50:02 · 736 阅读 · 0 评论 -
c++成员函数做回调
对于bind包装成员函数的用法,简单做个笔记。原创 2022-10-20 10:00:10 · 376 阅读 · 0 评论 -
undefined reference to `std::filesystem
在gcc8.3中使用filesystem,没想到编译加了-std=c++17还是报错。c++真是博大精深!原创 2022-08-02 09:12:20 · 4407 阅读 · 0 评论 -
链接静态库时报can not be used when making a PIE object; recompile with -fPIE
链接了一个SDK的静态库,报了大量的错误都是后在编译选项中加了-no-pie解决。原创 2022-07-04 17:47:30 · 2699 阅读 · 1 评论 -
c++协程库libfiber之5:协程池
目的我想在ibfiber的基础上实现一个简单的协程池类。我希望它是单例模式的,并且是线程安全的。执行的任务由std::function加入到任务队列里。协程池类的实现可以看到,下面的协程池类主要是三个接口:getInstance()、AddTask()和Clear()//协成池,负责管理和调度协程class FiberPool { //使用单例模式来实现 private: static acl::fiber_event FiberLock; static Fibe原创 2020-12-27 20:37:11 · 1134 阅读 · 0 评论 -
SOA、微服务、插件式开发框--知识小结
概述为了摸索c/c++插件框架,顺便把相关知识捋一捋。SOA(面向服务的框架)和微服务的区别Service Oriented Ambiguity 即面向服务的架构, 简称SOA。SOA是一种设计方法或思想(没有具体的实现)。它面向服务的分布式计算,服务间松耦合,通过网络调用(而非进程内调用)来通信,从而配合起来提供一系列的功能。有种观点说, SOA有两种实现方式,中心化方式就是ESB(企业服务总线),去中心化的服务就是微服务。ESB主要是做了消息转化和路由工作,让不同的服务互联互通。但是ESB容原创 2020-12-16 00:18:40 · 2123 阅读 · 4 评论 -
c++协程库libfiber之4:定时和延时
协程定时器cpp\include\fiber\fiber.hpp里有一个定时器类,只要继承这个类,实现它的纯虚接口run()即可。它内部其实是创建一个协程,在指定的毫秒数以后执行。/** * 可用作定时器的协程类 */class FIBER_CPP_API fiber_timer{public: fiber_timer(void); virtual ~fiber_timer(void) {} /** * 启动一个协程定时器 * @param milliseconds {unsi原创 2020-10-15 23:36:39 · 543 阅读 · 2 评论 -
c++协程库libfiber之3:调度协程的三种方式
简洁前一篇博客介绍了libfiber里使用协程的简单方法,这里介绍下调度协程的三种方式自动调度,立即执行这种模式下,创建的协程会被立即执行,协程结束后才返回创建处的代码逻辑。void schedule_two(void) { acl::fiber::init(acl::FIBER_EVENT_T_KERNEL, true); //指定事件类型,自动调度,注意第二个参数 for (int i = 0; i < 10; i++) { go[&] { fiber1(i); };原创 2020-10-13 23:39:33 · 795 阅读 · 0 评论 -
c++协程库libfiber之2:编译及例子
编译生成库分别在代码根目录和示例代码目录下执行make命令即可编译生成静态库:$cd libfiber$make由于libfiber同时支持c和c++ 接口,所以会默认生成两个静态库。如果需要动态库,需要在根目录下执行:make shared rpath=xxx其中rpath是存放静态库的目录。后面我主要关注c++ 的接口。c++ 的接口里实际上都是调用的c接口,真正的额实现在c里面,c++ 的接口只是封装了一层而已。编译示例程序示例代码在samples目录下,共4个目录。其中c下是c原创 2020-10-11 23:49:27 · 618 阅读 · 0 评论 -
c++协程库libfiber之1:简单介绍
缘起我前一篇CSDN博客里提到了libfiber这个协程库,我真的觉得这个库完成度很高,功能完善,文档详细,而且是中国的公司(爱奇艺)维护的,可预见的时间内都会是活跃的项目,还经过了生产环境的检验。总之种种原因,让我觉得这个项目还不错。看了代码后我更心动了。为什么要用协程协程除了可以提供更高并发的支持,还可以使用同步的方式写异步执行的代码,使得代码逻辑更加简洁和清晰。协程的栈目前我看到的示例代码里,libfiber的协程都是使用独立的栈,也就是属于stackfull类型的协程。这点和腾讯的协程库l原创 2020-10-08 23:52:20 · 1669 阅读 · 0 评论 -
标准库之外,那些通用的第三方的c-c++库
动机我自己一直基于c和c++来编程,但是时间久了会觉得于标准库过于简单,现成的“轮子”太少,在别的语言里各种强大的包多到飞起,直接import就能用起来。Cpp一直没有包管理机制(c++20才有了Modules的概念),要在孱弱的标准库之外扩展额外的库有不少工作要做。而且每种任务都无数的第三方库,貌似选择很多,却需要费心的去挑选,维护起来吃力不讨好。要是还要自己从源码编译,出点啥编译问题就更酸爽了。而且标准库连网络框架、json解析都没有,字符串处理停留在原始时代,没有官方的开发范式,c++是到了c++1原创 2020-09-17 23:37:58 · 6956 阅读 · 1 评论 -
关于高性能计算的知识记录汇总
MPI和openMPI的区别,或者CUDA和OpenCL的区别,这篇文章就是为了总结下高性能计算的相关知识。目前高性能计算有两大趋势,并行计算集群和CPU处理器GPU显卡的异构混合计算。下面做对这些名词进行一个简单的介绍:MPI-Message Passing Interface是一个并行计算的API,适合超级电脑,大规模集群。OpenMPI是一种高性能消息传递库,可以很方便的把串行程序,改为...转载 2018-09-26 22:46:36 · 3881 阅读 · 0 评论 -
Linux终端传输二进制文件的属性设置
使用Linux的tty终端编程总有一种穿越的感觉,明显是“终端机”时代的产物。嵌入式中仅仅用到简单的串口功能,但是《unix环境高级编程》用了一章来讲终端IO,那么多功能很容易搞混。在此小结一下!Linux终端常用的模式有三种:以行为单位的, 对特殊字符进行处理的模式 (cooked mode)原始模式, 不以行为单位, 不对特殊字符进行处理 (raw mode)cbrea原创 2014-01-13 16:03:45 · 5872 阅读 · 0 评论 -
sqlite3语法小结
SQLite3不支持的SQL语法请参考:http://hyshang.blog.163.com/blog/static/4594582220121311728522/自己做过的测试:在SQLite3中统计总的行数select COUNT (*) AS linenum from Table_name生成的结果有一行一列,字段名为linenum,内容为行数的字符串原创 2012-12-21 12:25:20 · 12630 阅读 · 2 评论 -
C语言的宏问题小结
今天遇到了一个宏引起的问题,所以总结一下。(1)#if 后未定义的字符被替换成0 代码:#include int main(int argc, char *argv[]){ printf("hello!\n");#if I_LOV_U printf("world!\n"); #endif return 0;} 执行结果为: yuanl原创 2012-10-17 18:00:58 · 2824 阅读 · 0 评论 -
Thinking in C++ 学习笔记(1) 类中的const
Thinking in C++ 学习笔记 类中的const 1. 类里的const(1)在一个类里,const意味着“在这个对象生命周期内,它是一个常量”。(2)在一个类里建立一个普通的(非static)const时,不能给它初值,初始化工作必须在构造函数的初始化列表里进行。初始化列表发生在构造函数的任何代码运行前,这(初始化列表)是初始化所有const的地方。(3)因原创 2009-11-15 13:33:00 · 1032 阅读 · 1 评论 -
Thinking In C++ 学习笔记(2)名字控制
Thinking In C++ 学习笔记(2)名字控制 1. 函数内部的静态变量函数内部的static变量存储在静态数据区而不是栈中,只在第一次调用函数时初始化一次。编译器会为没有初值的内部类型的静态变量赋值为零(转化为适当的类型)。 2. 函数内部的静态对象程序第一次执行到静态对象的定义点时(且仅一次)会调用对象的构造函数。 3.原创 2009-11-16 22:34:00 · 761 阅读 · 0 评论 -
c++中运算符重载遇到的问题
h:/test/complex2.h(23) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file msc1.cpp, line 1786) Please choose the Technical Support command on the Visual C++ Help m原创 2009-11-22 21:04:00 · 4066 阅读 · 0 评论 -
C++赋值给函数返回的引用
#include int & f();using namespace std;int m = 0; //f()返回一个引用int & f(){ return m; } int main(){ int a = 1; cout f() = a; m = 3; a = 4; cout getchar(); return 0; }/****原创 2009-11-24 19:12:00 · 1414 阅读 · 0 评论 -
C++虚函数表深入剖析
原文地址http://hi.baidu.com/123%C8%C3/blog/item/02b2ed392a8f6c2997ddd8f3.html C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码转载 2009-12-13 22:42:00 · 632 阅读 · 0 评论 -
编程笔记
最近两周的总结。 1. 由于INtelCPU 小端模式,因此低位在低地址。strlen((int)1) = 1; 2.不同类型的指针不能做相减运算。 3.No newline at end of file!为什么gcc会给出这么一个警告?这么规定的初衷有两个:一是为了每一行都要以换行结束。二是,因为行尾的/表示连接下一行,如果一个文件最后一行行尾有/,那么,紧跟它也被包含进原创 2010-03-26 12:27:00 · 817 阅读 · 0 评论 -
编程笔记(2)
21.说明一个指针 uint8_t p; p = &DDRB; 编译提示 警告:assignment discards qualifiers from pointer target type 这是什么类型的警告。DDRB是一个指向常量的指针 22.strcmp("T恤衫", "T恤");返回结果不为零。strncmp("T恤衫", "T恤",strlen("T恤"));返回结果为零。WH原创 2010-05-25 20:46:00 · 949 阅读 · 0 评论 -
gcc的编译过程
大家都知道编译的四个步骤:预处理、编译、汇编链接。但是这些步骤都是由谁完成的呢,今天做了几个实验验证一下。(本人对编译和链接的原理不是很精通,以下内容是摸索的,难免出错。不要被我误导了)首先编写一个简单的C文件,比如"hello, world!",然后使用-v选项来编译它,这样它的编译步骤就可以显示出来了。[zlg@localhost gdbtest]$ gcc -v //显示gcc的版本信息Using built-in specs.Target: i386-redhat-linuxConfig原创 2011-05-10 18:38:00 · 2661 阅读 · 0 评论 -
ld链接器的链接顺序
关于ld链接时寻找库的顺序,文档中给出了权威说法。之前一直是看到别人写的博文这么说,终于找到依据了。`-lNAMESPEC'`--library=NAMESPEC' Add the archive or object file specified by NAMESPEC to the list of files to link. This option may be used any number of times. If NAMESPEC is of the form `:FIL原创 2011-05-09 19:25:00 · 2808 阅读 · 0 评论 -
『已解决』expected expression before ‘struct’
<br /><br />编译一个应用程序,报以下错误:<br />[root@localhost 3250RTC]# make<br />gcc -o 3250rtc 3250rtc.c<br />3250rtc.c: In function ‘update_rtc’:<br />3250rtc.c:47: error: expected expression before ‘struct’<br />make: *** [3250rtc] Error 1<br /> <br />解决办法:<br />#i原创 2011-05-13 09:29:00 · 25803 阅读 · 4 评论 -
c语言中浮点运算的inf和nan错误
============================================作者:yuanluluhttp://blog.csdn.net/yuanlulu版权没有,但是转载请保留此段声明============================================自己遇到了浮点运算的错误,打印出来获得的浮点数总是inf、-inf、nan。郁闷原创 2011-03-10 09:38:00 · 22696 阅读 · 1 评论 -
周立功历年笔试题(软件类)
这些试题还是很有帮助的。当然今年的笔试不再是五道大题,而是20道选择加十道填空,估计以后也会这样。 周立功2009笔试题周立功笔试题9.20号去南航参加周立功的招聘会,人会很多,很多外地赶过来的。9点半宣讲会,10点半笔试,我考的是软件卷,共五道题1 括号匹配问题,这题目比较经典,利用堆栈2 实现一个将字符串去掉特定字符的函数3 计算二叉树总节点数 以及单链表的反转 都是基础转载 2009-11-15 09:24:00 · 2747 阅读 · 0 评论