C语言中几种特殊标准定义和用法

除了大家说的PHP,其实,C语言也是世界上最好的语言。C语言已经连续几个月占比 TIOBE 榜首,成为最受欢迎的编程语言了。

成都创新互联公司主要从事网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务双辽,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

C语言之所以那么受欢迎,除了历史悠久之外,还有他它具有一些编程语言没有的功能。那么,今年我们就来了解一下C语言的一些特殊功能。

一、ANSI C特殊标准定义罗列一些常见的特殊定义:

__FILE__:正在编译文件的路径及文件名

__LINE__:正在编译文件的行号

__DATE__:编译时刻的日期字符串 如“July 19 2019”

__TIME__:编译时刻的时间字符串 如”22:00:00“

代码:

  
 
 
 
  1. char BuildFile[] = __FILE__;
  2. int  BuildLine = __LINE__;
  3. char BuildDate[] = __DATE__;
  4. char BuildTime[] = __TIME__;
  5. printf("编译文件路径:%s\n", BuildFile);
  6. printf("编译代码所在行:%d\n", TestLine);
  7. printf("编译日期:%s\n", BuildDate);
  8. printf("编译时间:%s\n", BuildTime);

提示:__LINE__是整型数据;

其实除了这些还有很多相关的定义,比如:

1.__FUNCTION__:函数名,类型为:字符常量指针。

  
 
 
 
  1. char const* BuildFunName = __FUNCTION__;
  2. printf("函数名称为:%s\n", BuildFunName);

2.__VER__:IDE版本信息,类型为:整型。

如我用的IAR版本为:7.80.04,如下图:

代码:

  
 
 
 
  1. int  IDEVersion = __VER__;
  2. printf("IDE版本:%d\n", IDEVersion);

输出:

IDE版本:7080004

二、可变参数

我们在学习C语言的时候,都知道printf是可变参数的函数:

  
 
 
 
  1. char a = 1;
  2. char b = 2;
  3. char c = 3;
  4. printf("a = %d\n", a);
  5. printf("a = %d; b = %d\n", a, b);
  6. printf("a = %d; b = %d; c = %d\n", a, b, c);

上面就是可变参数printf的例子,也就是说参数可以一个也可以多个。

而接下来说的__VA_ARGS__,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C99规范中增加的。

1.关于__VA_ARGS__

__VA_ARGS__它是一个可变参数的宏,就是将左边宏中“...” 的内容原样抄写在右边 __VA_ARGS__ 所在的位置。

要注意的是,printf 的输出格式是括号内左边是字符串,右边是变量,而且右变量与左输出格式是一一对应的,不对应就会出错。可以参看下面那个例子, __VA_ARGS__其实是遵循了printf的格式。

...缺省号代表一个可以变化的参数表。使用保留名 __VA_ARGS__ 把参数传递给宏。当宏的调用展开时,实际的参数就传递给 printf()了。

2.实例说明

  
 
 
 
  1. #define SENSOR_Printf(...)  printf("--SENSOR--"__VA_ARGS__)
  2. int TemperatureVal = 25;
  3. SENSOR_Printf("温度 = %d℃\n", TemperatureVal);

输出结果:

  
 
 
 
  1. --SENSOR--温度 = 25℃

用心的朋友可能会猜测的到:“...”类似等于“__VA_ARGS__”。

从例子中我们可以看得出来,__VA_ARGS__的用途,主要是用于可变参数的函数。我们使用较多的printf就是最常见的一个。

如果我们的工程很庞大,我们就可以将打印信息分类,这样的好处就是方便我们识别各类打印信息。

本文题目:C语言中几种特殊标准定义和用法
文章地址:http://www.gawzjz.com/qtweb/news11/209511.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联