EDA365电子论坛网

标题: *(volatile unsigned int *)addr 具体是什么意思 [打印本页]

作者: Maskman    时间: 2022-12-2 10:07
标题: *(volatile unsigned int *)addr 具体是什么意思
*(volatile unsigned int *)是什么意思 3 U- h. `( w" X1 M1 I

; F7 Y8 a: x( K例如*(volatile unsigned int *)addr 具体是什么意思
% M. F& p/ b* x& H4 I( x
: ?2 a/ P5 w+ f! p8 Q% N
作者: big_gun    时间: 2022-12-2 11:06
分开来看,(volatile unsigned int *)就是定义一个可变的无符号整形指针,前面的那个*就是取起内容。
作者: dragongfly    时间: 2022-12-2 13:25
这个多是嵌入式编程时可能会用到。. r# @/ u, a, n2 c# m
* Y" H, M# k( {: W- `$ ?  ~6 d  N: Y- C
volatile的意思是告诉编译器,在编程源代码时,对这个变量不要使用优化。
作者: Crash    时间: 2022-12-2 13:33
在一般的程序设计中,如:
. u$ O. _: V9 V, Sint *a; int b;
  P9 b) E3 S$ ?$ f( N" @, b( }b = (*a) * (*a);这种情况。( {7 |0 h1 j8 g4 J; b" P! R6 H3 X! g
通常编译器为了减少存储器的读写时间,会把代码优化为:
6 p& |: J/ M$ r* M7 x/ K2 }/ f1 Dint *a; int b; int c;! ~0 z. H( v  S) n, E+ A
c = *a;- _$ c  G* A3 S
b = c * c;
! M- ?1 e& B/ f) s因为外部存储器的读写速度肯定赶不上内存的读写速度,这样可以省一次外部存储器的读取时间,从而提高速度。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2