浅谈C语言
楚君文
这个作者很懒,什么都没留下…
展开
-
浅谈C语言的restrict关键字
restrict关键字用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容(并非强制性的规定,即用了其他指针访问该内存空间也不会报错)。注意,这是一个C语言的优化关键字,开发者需要自己在编码的时候注意只能使用该指针访问特定的内存空间,并且多个指针指向的空间也不能重叠,以便于编译器后期的优化。使用该关键字时一定要额外小心,不然会出现意想不到的BUG。以下源码编译为汇编代码的时候使用了海思3519AV100的编译链arm-himix200-lin...原创 2020-05-15 23:22:49 · 1651 阅读 · 0 评论 -
浅谈C语言的volatile关键字
volatile用来提醒编译器它后面所定义的变量随时有可能改变,因此编译后的程序每次要对该变量进行操作时,都会对该变量的内存进行直接的操作,编译器不会自作主张地对变量进行优化。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的代码更新了的话,将出现不一致的现象。可以从下面的例子看出有没有加volatile的区别(PS:这里是使用了海思3519AV100的编译链arm-himix200-linux-以及加了-O1优化选项):1、没加volat.原创 2020-05-15 23:06:56 · 149 阅读 · 0 评论