![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 64
Alfred.HOO
专注于IP和SOC验证
展开
-
C语言中关键词volatile的用法(二)
volatile用于声明变量时的使用的限定符。它告诉编译器该变量值可能随时发生变化,且这种变化并不是代码引起的。给编译器这个暗示是很重要的。volatile的声明:1.声明一个变量为volatile,可以在数据类型之前或之后加上关键字volatile。下面的语句,把变量abc声明一个volatile的整型变量;volatile int abc;int volatile abc;2.把指针指向的变量声明为volatile很常见,尤其是I/O寄存器的地址映射。下面的语句,把pReg声明为一个指向8-b原创 2021-11-15 22:49:03 · 1050 阅读 · 0 评论 -
c语言中volatile的作用分析(一)
1. 背景在嵌入式领域,我们往往有的时候需要根据一个标记 flag或者变量(全局的)来进行不同策略的程序执行。在非编译器优化的形式下debug模式下,不会出任何问题。但是我们对外发布的时候,往往都是 release版本,也就是进行了编译器优化,这个时候程序可能就会不同。2. 编译器优化c语言中,编译的步骤是先编译后链接的,那么在编译一个文件的时候,这个文件使用了外部的变量,仅仅需要声明就可以,等到链接的时候回去查找,所以编译器优化的时候,都是针对于当前文件进行优化。编译器回去查找当前文件中那些原创 2021-11-15 22:45:51 · 872 阅读 · 0 评论 -
gnu c语言中变参宏
c中支持变参宏和__VA_ARGS__本人之前写过一篇关于c语言中宏用法的文章,需要的可以查看此篇文章>https://www.cnblogs.com/fulai-hou/articles/15520121.html>,这一篇主要讲gcc中专门支持的关于宏的参数的语法。使用保留名__VA_ARGS__来将参数传递给宏#define debug(...) printf(__VA_ARGS__)实例:PR("Howdy"); //宏展开后有一个参数printf("Howdy");PR("原创 2021-11-08 23:18:02 · 678 阅读 · 0 评论 -
c语言中宏的用法汇总
1.用作符号常量/明示常量时#define预处理指令和其他预处理指令一样,以#号作为一行的开始。指令可以出现在源文件的任何地方,其定义从出现的地方到该文件的末尾有效。预处理器指令从#开始,到后面的第一个换行符为止。宏的名字中不允许有空格,而且必须遵循c变量的命名规则:只能使用字母/数字/下划线,而且首字符不能是数字。注意,宏定义还可以包含其他宏(一些编译器不支持这种嵌套功能)。例如:#define TWO 2 //添加注释#define FOUR TWOTWO /宏展开为22,由于原创 2021-11-07 18:11:24 · 5060 阅读 · 0 评论