3、前期减少问题 软件问题的解决,有些不是个人能解决的,需要协调沟通,或者与研发团队的整体风格、制度有关。个人能决定的是软件具体逻辑,这也是体现个人技术能力的重点。 3.1 C语言基础1、多看优秀代码,学习其技巧。 2、使用带参数检测的接口,比如优先选择snprintf,少用sprintf,其它str前缀的如strncmp也是,但要明白这类接口和memcmp区别。不同的编译器表现不一致,平时也要多关注。 在GCC中编译运行(设备): char str[5];
int ret = snprintf(str, 3, "%s", "abcdefg");
//ret = 7 ,str = ab
char str[99];
int ret = snprintf(str, 99, "%s", "abcdefg");
//ret = 7 ,str = abcdefg
注:snprintf的返回值为字符串的长度,且写入的字符串后面带有‘\0’结束符。 在VC中编译运行: char str[5];
int ret = snprintf(str, 3, "%s", "abcdefg");
//ret = -1 ,str = abc [后面不会自动补\0结束符]
3、注意函数返回类型,避免类型强制转换导致调用判断异常,有些编译器对隐示类型转换直接报错,因为它确实存在风险。 4、合理的使用sizeof、struct、union、weak等关键字,增加代码的可读性和可扩展性。 5、参数使用前,如数组小标,指针变量使用前必须先判断是否合法。 6、浮点数不能直接进行==和!=比较,等等,这些细节太多,可以参考《C陷阱与缺陷》。 7、讲的都会,说的都对,但真实际写代码,就容易各种小问题,主要还是态度问题,缺乏自我检查、自测的步骤,依靠测试发现bug去驱动研发调试修复是大忌。
|