概述
volatile的重要性对于搞嵌入式的程序员来说是不言而喻的,对于volatile的了解程度常常被不少公司在招聘嵌入式编程人员面试的时候作为衡量一个应聘者是否合格的参考标准之一,为什么volatile如此的重要呢?这是因为嵌入式的编程人员要经常同中断、底层硬件等打交道,而这些都用到volatile,所以说嵌入式程序员必须要掌握好volatile的使用。
其实就象读者所熟悉的const一样,volatile是一个类型修饰符。在开始讲解volatile之前我们先来讲解下接下来要用到的一个函数,知道如何使用该函数的读者可以跳过该函数的讲解部分。
原型:int gettimeofday ( struct timeval * tv , struct timezone * tz );
头文件:#include <sys/time.h>
功能:获取当前时间
返回值:如果成功返回0,失败返回-1,错误代码存于errno中。
gettimeofday()会把目前的时间用tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
timeval结构定义为:
struct timeval{
long tv_sec;
long tv_usec;
};
timezone 结构定义为:
struct timezone{
int tz_minuteswest;
int tz_dsttime;
};
先来说说timeval结构体,其中的tv_sec存放的是秒,而tv_usec存放的是微秒。其中的timezone成员变量我们很少使用,在此简单的说说它在gettimeofday()函数中的作用是把当地时区的信息则放到tz所指的结构中,在其中tz_minuteswest变量里存放的是和Greenwich 时间差了多少分钟,tz_dsttime日光节约时间的状态。我们在此主要的是关注前一个成员变量timeval,后一个我们在此不使用,所以使用gettimeofday()函数的时候我们把有一个参数设定为NULL,下面先来看看一段简单的代码。
#include <stdio.h>
#include <sys/time.h>
int main(int argc, char * argv[])
{
struct timeval start,end;
gettimeofday( &start, NULL ); /*测试起始时间*/
double timeuse;
int j;
for(j=0;j<1000000;j++)
;
gettimeofday( &end, NULL ); /*测试终止时间*/
timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_sec - start.tv_sec ;
timeuse /= 1000000;
printf("运行时间为:%
最后
以上就是大胆皮带为你收集整理的C语言的那些小秘密之volatile的全部内容,希望文章能够帮你解决C语言的那些小秘密之volatile所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复