当前位置: 首页 > news >正文

环境处理收尾

环境处理收尾

  • 一. 命名约定
  • 二. #undef
  • 三. 命令行定义
  • 四. 条件编译
  • 五. 文件包含
    • 5.1 查找策略
    • 5.2 文件的嵌套包含

一. 命名约定

一般来讲 函数和宏的用法十分相似所以语言没办法帮我们区分二者。
拿我们平时的一个习惯是:

将宏名全部大写
函数名不要全部大写

二. #undef

当我们下面不想再用一个宏的时候我们可以使用这个符号
这样我们下面就无法使用宏了

举个例子

在这里插入图片描述

使用了这个#undef之后 我们就不能再使用Max了

三. 命令行定义

我们先在vim编译器下写出这段代码
在这里插入图片描述
然后尝试编译它

在这里插入图片描述
我们可以发现它给我们报错了 说sz没有定义

然后我们可以尝试在编译的时候去指定sz的大小

在这里插入图片描述
在这里插入图片描述
我们可以发现程序成功编译出来了

我们尝试执行一下试试

在这里插入图片描述
发现是可以完美运行的

然后我们再尝试输入sz=99试试

在这里插入图片描述

我们可以发现 这也是可以完美运行的

是不是很神奇

代码里面明明有个符号没有定义 我们却可以运行它

这就叫命令行定义

当我们想要编译出一个程序的不同版本时 这个特性就有点用处

四. 条件编译

直接上代码

在这里插入图片描述
当我们写出以上的代码的时候 我们可能会好奇 数组里面到底有没有放shuzi

那么我们就可以加上这么一行代码

在这里插入图片描述

但是呢 这么一行代码其实是没什么用的 删了又有点可惜 这时候我们就可以使

用我们的条件编译
在这里插入图片描述
当我们不想要它的时候我们可以将1改成0

在这里插入图片描述
常见的条件编译指令有


1.
#if 常量表达式
 //...
#endif
//常量表达式由预处理器求值。
如:
#define __DEBUG__ 1
#if __DEBUG__
 //..
#endif
2.多个分支的条件编译
#if 常量表达式
 //...
#elif 常量表达式
 //...
#else
 //...
#endif
3.判断是否被定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)
#ifndef symbol
4.嵌套指令
#if defined(OS_UNIX)
 #ifdef OPTION1
 unix_version_option1();
 #endif
 #ifdef OPTION2
 unix_version_option2();
 #endif
#elif defined(OS_MSDOS)
 #ifdef OPTION2
 msdos_version_option2();
 #endif
#endif

多分支
在这里插入图片描述

判断是否定义
在这里插入图片描述
在这里插入图片描述

五. 文件包含

5.1 查找策略

查找策略:先在源文件所在目录下查找,如果该头文件未找到,编译器就像查找库函数头文件一样在标准位置查找头文件。
如果找不到就提示编译错误。

5.2 文件的嵌套包含

所以说我们可以写出以下代码

在这里插入图片描述
当我们写出这些代码的时候 头文件就会只会被引用一次

当然使用#pragma once的效果也是一样的

以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏

希望大佬们看到错误之后能够不吝赐教 在评论区或者私信指正 博主一定及时修正

那么大家下期再见咯

相关文章:

  • 计算机学院第二周语法组及算法组作业
  • SpringMVC之请求建立和响应流程
  • SpringBoot如何打包项目?
  • 方法的覆写【重写】
  • 九月的问题异常归纳(2022.9)
  • 这些环保相关的标准和规范自2022年10月起实施
  • 二叉排序树(BST)删除结点算法详解之C语言版
  • 永劫无间游戏玩法设计梳理
  • matlab遗传算法优化带电机分数阶四分之一车辆模型参数
  • 【GNN报告】GNN可解释性 基于几何与拓扑特性的图学习
  • 力扣记录:Hot100(9)——337-448
  • android studio 制作app欢迎界面-两种方法(功能)(备忘)
  • Portapack应用开发教程(十八)NavTex接收 B
  • 网课题库后台-公众号搜题查题
  • 第九天:RabbitMQ(安装)
  • 手机运行慢怎么办
  • 【Redis 源码学习笔记】Reactor模型 事件驱动框架
  • JS面向对象编程之类(1)
  • Kubernetes简介及基本组件
  • Spring(一)- 工厂基础