当前位置: 首页 > 科技观察

C语言中几个特殊标准的定义和使用

时间:2023-03-12 03:51:47 科技观察

除了大家津津乐道的PHP,其实C语言也是世界上最好的语言。C语言连续数月占据TIOBE排行榜榜首,成为最流行的编程语言。C语言之所以如此受欢迎,除了历史悠久之外,还在于它拥有一些编程语言所没有的功能。因此,今年我们将了解C语言的一些特殊功能。1、ANSIC特殊标准定义列出了一些常见的特殊定义:__FILE__:正在编译的文件的路径和文件名__LINE__:正在编译的文件的行号__DATE__:编译时的日期字符串如"July192019"__TIME__:编译时的时间字符串如"22:00:00"代码:charBuildFile[]=__FILE__;intBuildLine=__LINE__;charBuildDate[]=__DATE__;charBuildTime[]=__TIME__;printf("编译文件path:%s\n",BuildFile);printf("编译代码所在行:%d\n",TestLine);printf("编译日期:%s\n",BuildDate);printf("编译时间:%s\n",BuildTime);提示:__LINE__为整型数据;其实除了这些还有很多相关的定义,比如:1.__FUNCTION__:函数名,类型:字符常量指针。charconst*BuildFunName=__FUNCTION__;printf("函数名是:%s\n",BuildFunName);2.__VER__:IDE版本信息,类型为:整数。比如我使用的IAR版本是:7.80.04,如下图:Code:intIDEVersion=__VER__;printf("IDE版本:%d\n",IDEVersion);输出:IDE版本:7080004二、可变参数我们在学习C语言中,我们都知道printf是一个可变参数的函数:chara=1;charb=2;charc=3;printf("a=%d\n",a);printf("a=%d;b=%d\n",a,b);printf("a=%d;b=%d;c=%d\n",a,公元前);以上是可变参数printf的一个例子,也就是可以有一个或多个参数。而接下来提到的__VA_ARGS__是可变参数宏,与printf中的可变参数宏定义相同,是新的C99规范中新增的。1、关于__VA_ARGS____VA_ARGS__,是一个可变参数的宏,就是将左边宏中“...”的内容复制到右边__VA_ARGS__的位置。需要注意的是printf的输出格式是括号左边是字符串,右边是变量,右边的变量和左边的输出格式是一一对应的,报错如果他们不对应就会发生。可以参考下面的例子,__VA_ARGS__其实是遵循printf的格式。...默认数字表示参数的可变列表。使用保留名称__VA_ARGS__将参数传递给宏。当扩展对宏的调用时,实际参数将传递给printf()。2、实例说明#defineSENSOR_Printf(...)printf("--SENSOR--"__VA_ARGS__)intTemperatureVal=25;SENSOR_Printf("Temperature=%d℃\n",TemperatureVal);输出结果:--SENSOR--temperature=25℃细心的朋友可能会猜到:“...”类似于“__VA_ARGS__”。从例子中我们可以看出,__VA_ARGS__的用途主要是针对可变参数的函数。我们用的比较多的printf是最常见的。如果我们的项目很大,我们可以将打印信息进行分类。这样做的好处是方便我们识别各类打印信息。