🚩write in front🚩
🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~2022博客之星Top63~作者周榜84﹣作者总榜704~阿里云专家博主 & 阿里云星级博主~掘金优秀创作者⇿InfoQ创作者⇿51CTO红人⇿全网访问量50w+🏅
🆔本文由 謓泽 原创 如需转载还请通知⚠
📝个人主页-謓泽51Ctop的博客📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-謓泽51Ctop的博客_【C语言】从0~1_51CTO博客🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
🔥预定义符号🔥
预定义符号一共有⑤种,如下所示↓
- __FILE__:表示进行编译的文件名。
- __LINE__:表示文件当前的行号。
- __DATE__:表示文件被编译的日期。
- __TIME__:表示文件被编译的时间。
- __STDC__:如果编译器遵循的是ANSIC,其中值为1,不然就是未定义。
- __FUNCTION__:表示该函数所在的函数名。
那么我们用上面的代 码打印来分别看看它们的最终打印出的结果吧,代码示例如下↓
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
printf("%s\n", __FILE__);
printf("%d\n", __LINE__);
printf("%s\n", __DATE__);
printf("%s\n", __TIME__);
printf("%s\n", __FUNCTION__);
//在vs上不支持STDC
printf("%d\n",__STDC__)
return 0;
}
运行结果🖊
main.c
6
Mar 15 2022
07:38:23
main
1
拓展知识点
#error: 可以进行自定义编译器报错.
#line: 可以定制化你的文件名以及代码行号(__FILE__&__LINE__)
#pragma:用于指定计算机或操作系统特定的编译器功能(#pragma message ("str"))不会报错条件是否存在.
#pragma warning(disable:num):消除警告.
🔮日志🔮
那么接下来我们就来用 fopen() 函数来写下"日志"打开文件为 log.txt,在做这个之前我们先复习下原来的知识点如下↓
- FILE:对象,其中包含用于控制流的信息。
- fopen():打开一个文件。
- fprintf():格式化输出函数。
- fclose():关闭文件。
- 在下面代码 mode 参数访问使用了"a+":append/update(读写):打开一个文件进行更新(包括输入和输出),所有输出操作都在文件的末尾写入数据。重新定位操作(fseek, fsetpos、rewind)影响下一个输入操作,但输出操作将位置移回文件末尾。如果文件不存在,则创建该文件。
代码示例如下↓
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
FILE* pf = fopen("log.txt", "a+");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fprintf(pf, "%s %d %s %s %s\n", __FILE__, __LINE__, __DATE__, __TIME__, __FUNCTION__);
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}