C标准规定了一些预定义宏,其具体演示如下:
//文件名:define_.c
void function_f()
{
printf("the date:%s\n",__DATE__); //预处理的日期
printf("the file:%s\n",__FILE__); //表示当前源代码文件名的字符串
printf("the line:%d\n",__LINE__); //表示当前源代码中当前行的行号
printf("the func_:%s\n",__func__); //表示当前源代码中当前函数的函数名
printf("the stdc:%d\n",__STDC__); //表明实现是否遵循c标准,为1为遵循,否则
printf("the STDC HOSTED:%d\n",__STDC_HOSTED__);//本机环境设置
printf("the time:%s\n",__TIME__); //表示翻译的时间
}
其结果为
注意:
C99标准提供一个名为 __func__的预定义标识符,它展开为一个代表函数名的字符串(该函数包含该标识符),那么, __func__必须具有函数作用域,而从本质上看宏具有文件作用域。因此,__func__是C语言的预定义标识符,而不是预定义宏。