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的方式在这几个目录中快速切换