【C/C++语言】项目中遇到的各种BUG

本文使用环境:
语言:C/C++
编译环境:都可

写在前面:
这篇文章仅仅只为 自己 的学习。

一、C语言遇到的不算问题的问题

1、宏定义计算

宏定义中必须要加括号
正确:

#define Period (MAIN_Fosc/100000) //350 
//初以1000 转化成khz
#define PWM_Fre (MAIN_Fosc/1000/Period)

错误:

#define Period MAIN_Fosc/100000 //350 
//初以1000 转化成khz
#define PWM_Fre MAIN_Fosc/1000/Period

2、结构体指针和结构体变量

struct tm *time_point;
struct tm time_temp;

time_point&time_temp 虽然都是表示的相同结构体的地址,但是不对等。
上述两个变量有着本质的区别。
time_point:表示指针,指向time_point的指针,注意:这里的指针time_point并没有分配地址,即time_point = NULL,因此使用的时候不能对内容直接赋值,必须分配地址:要不申请空间,要不把其他的首地址赋值给它。
time_temp:表示结构体的名字,注意这里已经分配地址了,&time_temp是该结构体的首地址,是实实在在的地址。
总结:两个东西不要搞混淆了。
用指针的形式,可以少申请一段空间,因为可以直接将存在的空间直接赋值给它,但这段空间的数据是两个变量使用,一个变量改变会影响另一个变量。
如果用后一种定义,相当于多使用的一份空间,费空间但可以保证数据的独立性。

猜你喜欢

转载自blog.csdn.net/qq_37280428/article/details/125036698