餐饮网站建设方案书,大庆建设银行网站首页,怎样用xampp做网站,电商app开发费用#x1f6a9;write in front#x1f6a9; #x1f50e;大家好#xff0c;我是謓泽#xff0c;希望你看完之后#xff0c;能对你有所帮助#xff0c;不足请指正#xff01;共同学习交流#x1f50e; #x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5#xff5… write in front 大家好我是謓泽希望你看完之后能对你有所帮助不足请指正共同学习交流 2021年度博客之星物联网与嵌入式开发TOP52021博客之星TOP1002022博客之星TOP63周榜159 ⌁ 总榜751阿里云专家博主 阿里云星级博主掘金优秀创作者⇿InfoQ创作者⇿51CTO红人⇿全网访问量50w 本文由 謓泽 原创 CSDN首发 如需转载还请通知⚠ 个人主页謓泽的博客_CSDN博客 欢迎各位→点赞 收藏⭐️ 留言 系列专栏【C】系列_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台演出并非我们所选择的剧本 目录
write in front
预定义符号
日志
条件编译
常见条件编译指令
三大要点 预定义符号 预定义符号一共有⑤种如下所示↓ __FILE__表示进行编译的文件名。__LINE__表示文件当前的行号。__DATE__表示文件被编译的日期。__TIME__表示文件被编译的时间。__STDC__如果编译器遵循的是ANSIC其中值为1不然就是未定义。__FUNCTION__表示该函数所在的函数名。那么我们用上面的代 码打印来分别看看它们的最终打印出的结果吧代码示例如下↓ #define _CRT_SECURE_NO_WARNINGS 1
#includestdio.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上不支持STDCprintf(%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 参数访问使用了aappend/update(读写)打开一个文件进行更新(包括输入和输出)所有输出操作都在文件的末尾写入数据。重新定位操作(fseek, fsetpos、rewind)影响下一个输入操作但输出操作将位置移回文件末尾。如果文件不存在则创建该文件。代码示例如下 #define _CRT_SECURE_NO_WARNINGS 1
#includestdio.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;
} 说明O从上述的结果当中可以看出成功打印出了日志信息。 条件编译 条件编译一句话满足条件就编译不满足条件就不编译。 在编译一个程序的时候我们如果将一条语句或者是一组的语句编译再或者是放弃是非常的方便的。因为我们有条件编译的指令。比如↓ 调试行的代码删除可惜保留又碍事所以我们可以选择性的编译。 举出下面的例子代码如下↓ 在这里会举出两个例子①参与编译、②不参与编译。在这里我们先举出第②个例子↓ #includestdio.hint main(void)
{
#ifdef PRINTprintf(hello C);
#endif
} 运行结果如下↓ 无那么这个是为什么呢。实际上就是我们用了条件编译语句。把它给屏蔽了也就是不参与编译了。 #ifdef PRINT//
#endif 那么我们想让上面代码参与编译我们该怎么办呢。实际上很简单#define 即可。 #includestdio.h
#define PRINT
int main(void)
{
#ifdef PRINTprintf(hello C);
#endif
} 运行结果 hello C 常见条件编译指令 #if指令 该指令检测表达式值是否为真。如果表达式的值为真则编译后面的代码直到出现 #else、#elif 或 #endif 为止否则不编译。#endif指令 该指令用于终止 #if 指令。#else指令 该指令用于 #if 指令之后当前面的 #if 指令的条件不为真时就编译 #else 后面的代码。 //如果宏定义了PRINT执行,否则执行#else
#ifdef PRINT printf(HELLO);
#elseprintf(C);
#endif #elif指令 该指令综合了 #else 和 #if 指令的作用。下面的示例代码演示了 #if、#else、#elif 与 #endif 的组合使用情况。其实和else if()语句作用差不多都是配合#if来进行使用的多条件语句当中使用。#ifdef 和 #ifndef 指令 相对于 #if 指令检测表达式的值是否为真#ifdef 和 #ifndef 指令用于检测指令关键字后面的宏名称是否已经定义。其中#ifdef 指令表示如果宏已经被定义那么它的检测结果为真否则返回假而 #ifndef 指令的含义正好与 #ifdef 指令相反它表示如果宏未被定义那么它的检测结果为真否则为假。三大要点 ⒈为何要有条件编译 本质是为了进行对应的达到裁剪代码的目的而我们裁剪代码的目的通常很丰富具体是和你的应用场景有关系的。有的是为了进行一个版本之间的维护的例如:有商业版和免费版等...当然我们还有可能使用条件编译完成其它的事情。 ⒉条件编译如何使用 在上述条件编译讲解当中我们也说过的这里就不在描述了。大家可以自己上手用代码描述一下。 ⒊条件编译在哪些地方使用 通常用于中大型项目当中会使用到条件编译以及版本之间的维护(某某软件完全版和精简版)当然条件编译还可以完成一些其它的事情。 ★结论⇢条件编译的本质是对代码进行裁剪。