编程技巧总结

编程技巧总结

1、尽量少使用while(1)死循环,可以在init函数中使用g_xxx_quit置为false,然后while(!g_xxx_quit)进行轮询,退出时需要在uninit()函数中将s_quited置为true,退出循环。
2、想要在不同平台执行不同的代码可以使用以下这种方式编写代码。

编写完成后需要在Cmakelist.txt增加定义
ADD_DEFINTIONS(DXXX)

#ifdef QNX
.....
#else
.....
#endif
3、变量命名规则

1)命名全局变量:
staitc 类型 g_xxxx = 0;
g代表global。
2)内部成员变量的命名:
都是以m开头,m代表member的意思,
eg:mMutexPulse;成员变量
eg:mpArcCalibration;成员指针

4、回调函数的编写

回调函数的调用主要涉及状态的反馈。
编写步骤如下:
1)在最外部定义好回调函数的具体动作。
eg:void xxxx_cb(void* pUserdata, .....);
2、将定义好的回调函数传入内部,主要通过Init初始化函数传入。
3、一旦有状态更新反馈,就会触发函数内部回调,进入外部的回调函数。

5、初始化相关

1)给结构体赋初值
memset(&变量名, 0, sizeof(变量类型));
2)将一个结构体的内容赋值给另一个结构体(两个结构体)
memcpy(&内部变量名, 外部变量指针, sizeof(变量类型));
3)什么时候指针可以写成数组形式赋值?
给该指针动态分配内存空间;

typedef struct _tag_XCameraEng_InitParam
{
	xxx 
	xxx
	ARCCAMERA_PARAM_T* pCamera;
	...
}XCAMERAENG_INITPARAM, *LPXCAMERAENG_INITPARAM;
sEngInitParam.pCamera = (ARCCMERA_PARAM_T*)malloc(sEngInitParam.nCameraNum * sizeof(ARCCAMERA_PARAM_T));
sEngInitParam.pCamera[0].xxx = xxxx;
......
sEngInitParam.pCamera[1].xxx = xxxx;
......
sEngInitParam.pCamera[2].xxx = xxxx;
......
sEngInitParam.pCamera[3].xxx = xxxx;

4)当一个动态分配的变量赋值给完另一个变量后,需要马上释放。

res = XAVMEng_Create(&sEngInitParam, &sAvmEngInitParam, &g_pXAVMEng);
if(sEngInitParam.pCamera != 0) {
	free(sEngInitParam.pCamera);
	sEngInitParam.pCamera = 0;
}
6、错误码的使用

1)MERR_UNKNOW
将参数传到算法中去,返回值不为0,返回该错误码。
2)MERR_INVALID_PARAM

  • 当传入的句柄指针为空时,返回该错误码。
  • 或者传入的参数不符合参数范围时,返回该错误码。

3)MERR_BAD_STATE
当前状态不符合想要的状态时,返回该错误码。
4)MERR_UNSUPPORTED
当某个属性不支持的时候,返回该错误码。
5)MERR_NO_MEMORY
当内存分配失败,返回该错误码。

eg:
sEngInitParam.pCamera = (ARCCMERA_PARAM_T*)malloc(sEngInitParam.nCameraNum * sizeof(ARCCAMERA_PARAM_T));
if (!sEngInitParam.pCamera) {
	LOG_E("memory malloc failed");
	return MERR_NO_MEMORY;	
}
7、负数如何存储在有符号整数

负数为-2147483648,保存时的时候应该使用有符号整型来进行保存数据。
signed int
用32个字节存储则可以表示为0x80 00 00 00。
二进制可以表示为1000 0000 0000 0000。第一位表示为负数。后面所有位取反加1便可以得到负数值。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值