本人没学过C,但是工作中赶鸭子上架,得接触一些。对于一些开源代码,编译配置、动态库、静态库之类的稍稍掌握了一些,但写起代码来,还是一头雾水。
最近项目上的机会,跟人学了些东西。
非常粗浅,聊作记录。
1、利用if 0 endif 实现代码屏蔽,调试段错误。
在C语言中时常会用到#if 0,#if 1,#else,#endif语句,语句如下所示:
#if 0
code
#else
code
#endif
此时code1的语句被注释掉了,永远没有办法执行,而code2是被编译的;如果将#if 0变为#if 1,code1被编译,而code2永远没有办法被执行。
可以利用此特性,不断缩小范围,在代码中排查有问题的代码。
2、char * p和(char *)p
第一种,是定义一个char类型指针;第二种是把P强转为一个char类型指针。
char *p不能直接赋值,只能传另一个变量的地址。
char p1=“000222000”,才是对的,char* p = p1,才对。
3、修改makefile.am或configure.ac文件后,应为修改时间戳的不同,导致make时提示WARNING: ‘automake-1.14’ is missing on your system.You should only need it if you modified ‘Makefile.am’ or ‘configure.ac’ or m4 files included by ‘configure.ac’.
这就是因为时间戳变化,导系统以为文件被修改,所以需要重新编译几个脚本文件。
可以在根路径下执行autoreconf -ivf 即可解决。