程序开发错误总结

           这是一篇专门个人程序开发过程当中一些错误的总结,置顶于我的个人博客:https://blog.csdn.net/qq_41985711当然可以通过编译器能找出来错误都不叫错误(哈哈 O(∩_∩)O )。

1、pthpool.c: In function ‘routine’:

pthpool.c:4:1: error: expected ‘ = ’, ‘ , ’, ‘ ; ’, ‘asm’ or ‘__attribute__’ before ‘{’ token
 {... ...

解释:这种错误出现那么错误提示码出现绝不会单独出现,(我只列了一行)一来就是一大堆,有一个关键的错误提示就是在函数

的第一个 " { "出现以上错误提醒。

原因:函数声明出错,函数声明和函数原型除了参数名其他的必须一模一样,声明结尾要加 " ; ",不然的话就会出现以上错误。这种错误很致命,一旦出现你很难定位到错误的文件。因为编译器提示错误在 c 文件里面,函数声明错误你去 c 文件里面可以解决吗?(合格的程序员声明放在 h 文件里面的)。就拿上面的说,编译器提示我错误在 pthpool.c 里面,实际错误却在 pthpool.h 里面,这错误差点把我搞死。

2、sleep函数的一个小知识点(容易被忽略)

       sleep() 函数可不是一个简单的延时函数,因为 sleep() 函数根本不是什么延时函数,它是一个使程序进入睡眠的函数,睡眠是指不再占用 cpu 资源,而延时是一直占用着 cpu 资源的。当信号来临时刚好在 sleep() 的话,那么程序就会被提前唤醒。如果你想延时那么就延时不了。(这一点真的很容易忽略的)

3、怎么模块化编程

        模块化编程看似简单,实则需要一定的开发经验才能入门模块化编程。现在的我就是刚刚入门。下面展示模块编程的一些步骤。(希望大家可以提点一二,指出错误就更好了 O(∩_∩)O )

         (1)、明白模块应该实现什么功能,先把接口参数定下来,因为实际开发是并行的,第一步就是要确定接口参数。接口文档一定要会写。

         (2)、设计功能测试代码,个人独自开发的时候你可能会所有模块写完,然后测试总功能。但实际开发,模块很多,也不是你一个人写。所以程序一定不能出错,一旦出错就是一个大工程。所以你写的模块一定要经过严密的测试才能被使用。

        (3)、模块编程是结果论而不是方法论,意思就是别人使用你这个模块的时候可以不关心你这个模块怎么实现的,只要会使用就可以。所以模块的接口参数要尽量要少。

        (4)、新学到一个技巧,先写测试代码,再来写模块函数。//18-9-11

4、stat函数

       stat函数获取文件属性,但有一点特殊之处,stat无法获取文件夹大小,获取文件夹大小需要递归获取文件大小。

5、循序渐进,冷静分析

6、库函数有返回值的一定要判断是否操作成功。

例如:open  read write pthread_create 等等类型的函数, 一旦出错得到的返回值就是一个错误的值,后序操作会出现奇怪的现象。

出错:

#define LCD "/etc/input/event0"

int fd = open("LCD", O_RDWR);   // 已经宏定义还打  " " ,fd 为 -1

read(fd, &buf, sizeof (buf));           // read 错误的文件描述符,返回 -1, 不在阻塞

7、strcpy 函数为什么还要返回值

看例子:strlen(strcpy(dststr, "hello"));                     // 灵活性,要方便实际开发

8、动态库移植问题

注意一点:Linux下的文件链接在windows下无法存储,这就意味着你不能在共享文件夹里面创建文件链接或者保存文件链接,往往库里面为了方便动态库升级,都会创建文件链接,这样就不可以在把完整的库放在共享文件夹,只能将库压缩在放入共享文件夹。

9、项目的开发过程

项目功能很多时,应该由易到难,先实现相对简单的模块,确保简单模块没有bug,再在已有模块上加入新的功能,写后面的功能时考虑对前面功能的影响,因为前面的功能已经实现,所以可以控制。写前面功能时切忌过分顾及后序功能,因为后序功能不可控。当然你前面的实现代码需要灵活。

10、字符数组转 int 型整数

例如:
int test;

char arr[4];
arr[0] = 'A';
arr[1] = 'B';
arr[2] = 'C';
arr[3] = 'D';
test = arr[3]<<24 | arr[2]<<16 | arr[1]<<8 | arr[0];

猜你喜欢

转载自blog.csdn.net/qq_41985711/article/details/82555261