工作学习中的一些小的收获&踩的坑(持续更新)

1. 使用extern在动态库和主函数中共享变量,设置条件等,两种情况

  A. 动态库中定义,主函数文件中声明

  B. 与A相反,但是这个时候需要加上 -W1 --export-dynamic编译选项,否则会报链接错误

=======================================================================

2. 如果一个类型的定义被用typedef 隐藏起来了(一般是个结构体指针),两种情况

  A. 定义这个这个类型的.c文件能看到,这时候如果想用这个类型的成员变量,可以把声明定义部分挪到.h头文件中,并根据编译情况,调整相  应的依赖情况

  B. 如果c文件都被闭源了(只提供h和lib),只能通过头文件中查找看看是否有对应的接口来访问相应的变量了

========================================================================

3. 记一个容易犯的bug

在进行图像颜色空间转换时,常用到i,j 去逐个像素点的处理,如:

i = y_index/width;

j = y_index%width;

uv_index = i / 2 * width + j - j%2;

我当时在优化这段代码,发现 i /2 *width = = y_index/width /2 *width == y_index/2

这就出错了,上述等式只是数学上的相等,实际上y_index/width 很有可能就已经是0了,所以由于计算机中的整数除法,和现实中的不太一致,遇到此类操作需要谨慎行事。

========================================================================

4. 各种src, dst操作的位置

工作中常遇到各种和src,dst有关的操作,但是它们的位置其实并没有所谓的标准可言,这里记录在此,以防后面再踩坑吧

系统调用或标准库:

read(fd, buf, len);

write(fd, buf, len);

memcpy(dst, src, len*sizeof(type));

memmove(dst, src, len*sizeof(type));

linux命令

mv <src> <dst>

cp <src> <dst>

 

========================================================================

3.  json与xml文件对比

json文件比较轻量,基本上这个算是最大的优势了吧,至少在嵌入式领域是这样

最近正好打算重构一个gui的platform,打算把一些配置抽出去,放到json文件里让用户去配置

到时再进一步比较这件事吧

=========================================================================

4. 进程间的local socket通信与dbus通信

这个东西比较专,我打算放到linux专题中去记录

 

5. 多个常用目录之间的来回快速切换

使用pushd命令进行多个目录之间的快速切换

比如根目录下有/A, /B, /C三个目录,我需要在这里面来回跳

我可以pushd /A

pushd /B

pushd /C

然后这三个目录全放到一个目录栈中去了

我可以使用pushd  +N 或pushd -N的方式在这几个目录中快速切换

 

 

 

 

 

 

posted on 2019-08-28 00:59  疾速瓜牛  阅读(176)  评论(0编辑  收藏  举报

导航