C编程之预处理标识符——__LINE__,__FILE__,__DATE__,__TIME__,__STDC__,#,##
来源:互联网 发布:如何获取股票交易数据 编辑:程序博客网 时间:2024/05/16 08:55
常用的预定义符号:
1. __FILE__ : file顾名思义,也就是进行编译的源文件所在目录。
2. __LINE__ : line表示进行编译的当前文件当前所在的行号。
3. __DATE__ : date表示当前文件被编译的日期。
4. __TIME__ : time即⽂件被编译的时间,精确到秒。
5. __STDC__ : stdc表示如果编译器遵循ANSI C,其值为1,否则未定义 。
6. #
7. ##
下面我们来看一段代码加深理解:
<pre class="cpp" name="code"><span style="font-size:24px;">#include<stdio.h>int main(){printf ("file:%s\tline:%d\tdate:%s\ttime:%s\t%d\n",\__FILE__ ,__LINE__,__DATE__,__TIME__,__STDC__ );return 0;}</span>
上面代码在Linux(centos)下运行结果如下图:
文件所在位置csdn.c,当前行数为5即从代码第一行#include<stdio.h>开始向下数第五行,日期时间也都准确打印出来,需要我们注意的是stdc打印出的1,也就是说centos环境遵循ANSI C。
下面我们来看一下这段代码在vs2008编译器下的stdc打印情况:
编译器提示__STDC__是未声明的标识符,即未定义,也就是说vs2008编译器不遵循ANSI C。下面我把__STDC__删掉,我们来看一下运行结果:
大家可以看到file显示当前文件所在目录是在f盘下的一个csdn.c里,行数,日期,时间也依次打印出来。
#和##的使用就要说到宏了。我们先来看一段代码:
<pre class="cpp" name="code"><span style="font-size:24px;">#include<stdio.h>#include<windows.h>#define M 10#define PRINT( FORMAT, VALUE ) \printf("the value of "#VALUE" is " FORMAT"\n", VALUE)int main(){PRINT("%d", M);system("pause");return 0;}</span>
(printf函数是具有可变参的,也就是说它可以有很多个参数。)
下面我们来看一下运行结果:
我们可以看到printf函数的参数“the value of ”和“ is”中间多了一个字符M,而宏定义中,两个参数中间是#VALUE,也就是说在生成可执行程序过程中,#VALUE换成了字符M。其实宏是可以嵌套使用的,这里预处理时,系统会检测到宏PRINT中嵌套了宏M,这时候,VALUE = M。 #VALUE这种形式在预处理时被编译器翻译成字符串,即“M”。
而##结构的功能是把位于它两边的符号连接成一个符号。举个例子:
<pre class="cpp" name="code"><span style="font-size:24px;">#include<stdio.h>#include<windows.h>#define CAT( STR1,STR2 ) STR1##STR2int main(){printf("%s\n", CAT("aa","bb"));system("pause");return 0;}</span>
如有错误,欢迎指出,一起交流学习!
0 0
- C编程之预处理标识符——__LINE__,__FILE__,__DATE__,__TIME__,__STDC__,#,##
- 预处理标识符: __LINE__ __FILE__ __DATE__ __TIME__ ##
- __FILE__,__LINE__,__DATE__,__TIME__,__STDC__ 宏定义
- 熟悉以下预处理标识符__LINE__ __FILE__ __DATE__ __TIME__ # ##
- 预处理标识符:__FILE__ __TIME__ __DATE__ __LINE__ ;#以及##的区别
- 使用一些宏跟踪调试__LINE__ __FILE__ __DATE__ __TIME__ __STDC__
- 预定义符号,__FILE__, __LINE__, __DATE__, __TIME__, __STDC__
- C语言预定义宏__LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __cplusplus
- __FILE__,__LINE__,__DATE__,__TIME__
- __FILE__, __LINE__, __DATE__,__TIME__,
- __FILE__,__LINE__,__DATE__,__TIME__
- c 语言中的 __LINE__,__DATE__,__TIME__,__FILE__
- C语言 __FILE__, __LINE__,__DATE__,__TIME__
- 预处理器__FILE__,__LINE__,DATE__,__TIME__,__STDC__的使用
- C语言好难——几个宏定义__DATE__,__TIME__,__FILE__,__LINE__
- __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__
- __FILE__,__LINE__,__DATE__,__TIME__用途
- __DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__
- USACO 1.4 Mother's Milk
- centos7 无法启动网络(service network restart)错误解决办法
- HDU 4442 Physical Examination(贪心)
- 解密 加密
- P1019 单词接龙
- C编程之预处理标识符——__LINE__,__FILE__,__DATE__,__TIME__,__STDC__,#,##
- 学生信息管理系统 SSH 框架使用及范型使用
- robotium整理(二)
- open_input_file()函数介绍
- kill adb.exe
- Pseudo code for In-class QuestionExample 3: Write pseudo code that performs the following: Ask a use
- 【杂谈】蓝屏修复杂谈
- Shell脚本快速入门
- ld: warning: directory not found for option 去掉警告的方法