[c/linux]工作与学校的不同|一个月接触了什么|嵌入式

时间过得很快,转眼间从签订合同到现在已经一个月了。从helloworld水平到接触公司的源码。从socket通信小程序到现在帮忙移植业务层的功能。我了解到了实际开发与学校学习的部分不同。

错误检查

在实际生产环境中,错误是很常见的,一个错误往往很致命。我们应该尽可能地去避免。例如在初学c语言函数时,我们可能是这样写代码:

void printHello()
{
    //写功能
    printf("hello");
}

但在实际开发中,往往不会出现void函数–为了判断内部有没有正常执行成功,通常使用int函数,根据不同的出错情况返回不同的值。或者置一个全局标志位,根据这个标志位来判断函数是否正常退出。另外会对函数的参数进行检查。在linux中,一般返回值为0是成功,其他为失败。(另有约定除外)。

这种情况,一般是检查输入参数的正确性,或者处理过程中可能出现的各种出错。例如有这样一个函数:

int fun(int channel)
{
    if (channel != 0 && channel != 1)
    {
        return -1;
    }

    //处理
    doxxxx

    return 0;
}

像这样可以判断函数是否正常执行成功,如果出错,错在哪。方便debug

另外一个是指针的使用与回收。这个在c语言里非常严格。因为使用不好会造成资源无法回收,甚至导致野指针出错。malloc我们是建议这样使用:

char *buf = (char *)malloc(sizeof(char)*128);
if (!buf)
{
    buf = NULL;
    return -1;
}
// 处理业务
......
// 处理完业务
if (buf)
{
    free(buf);
    buf = NULL;
}

FILE *指针类似。

结构体、数组嵌套

像这种:

typedef struct _link_channel_t
{
	int enable;
	link_entity_t link_entity[ROW][COLUM];
}link_channel_t;

老实说我最怕这个,有的甚至4,5个结构体一直嵌套下去。这是我觉得c语言比较恶心的地方。像函数参数,c语言就喜欢传个结构体,有些屎山代码就喜欢传个最外层的,结果只使用到了最里层的参数。理解起来十分复杂。(一些粗浅的理解)不过最近有在用回调函数来优化,部分已经优化到两层了,这个还好。

回调函数

之前从未了解过,现在也不太理解它的好处。不过听说很有用。等到以后再说吧。

开发规范

这个应该是每个>100人的公司都会有的。具体可能每个企业不同。我们是g_表示全局变量,函数名是回调函数以CB结尾,函数命名以小写+下划线(linux可能多是这样,windows就是大写连着),结构体以_t结尾。文档里还有很多,这个也跟团队风格相关的,没有固定解。

后续

哈哈哈,一开始这个是每晚加班摸鱼写的。(这两个词能共存???)没想到后面1个月后就让我接触实际项目开发了(小公司就是这样罢),因为能力差,所以很忙。当然收获也很大。距离这个文档创建到写完已经半个月了,有很多当时想到的现在忘记了,那就下次再写吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值