结构体 联合 枚举

联合 只能保存最后赋值的结果
枚举 所有可能值列出来

预处理命令
是在编译前期的阶段
代码-(编译)-->可执行文件(exe)
预编译 编译前对代码处理
*1.插入头文件的内容 #include<stdio.h>
*2.宏定义替换
3.删除注释--->注释在预处理阶段全部被删除
*4.条件编译

#----> 预处理符号

1.宏定义 #define
主要作用 定义一个宏 用于文本替换
宏 没有类型可言
1.1无参宏定义
多用于常数的替换
可以不用一个一个的去修改常量
常用于常量 字符串 表达式 方便于检查和修改
注意 不能重复定义
1.2带参宏定义
带参的宏 使用和函数类似
1.只是简单地替换 不检查类型 一般用它替换简单的函数
2.直接替换 不会先计算 也不会检查类型 (所以要注意有先级的问题)

函数的参数需要声明类型 宏定义不需要

带参宏定义 主要 替换简单函数(会比函数快)
代码比较长的函数就不适用了

2.文件包含

#include
包含函数定义

#include<stdio.h>//系统提供的 一般用<>
#include"stdio.h"//自己写的头文件用""

区别:
<>查找范围在系统的文件下(如果找不到就显示找不到)
""查找范围-->现在当前文件下寻找,如果找到就直接使用 如果找不到就在系统文件下寻找 如果找不到就报错

自己写的头文件在项目文件夹下只能用""
系统提供的头文件 <>会查找的快一点

添加方式如下:

然后在源文件部分创建一个同名的.cpp文件  *****一定要同名*****

例如:

自己写的头文件

1.添加一个.h文件 和添加一个同名的.cpp文件
2..cpp文件包含头文件
3.函数声明放在.h里面 定义放在.cpp中
函数声明定义全放在.h中也可以
注意:1.如果放在.cpp里面的函数需要调用其他函数 可以在.h里面包含自己想要的头文件
2.定义之后 项要使用这个函数 只需要在代码中包含对应的头文件即可
3.防止头文件的相互包含
a.h b.h
a.h包含b.h 同时b.h包含a.h 文件相互包含 会导致错误

注意:1.一般预处理命令 后面最好不要加分号

3.条件编译

#if //后面跟着一个条件 条件如果成立就执行后面的语句 编译时候包含后面几句 编译之前可以确定的条件
#endif //结束

#elif //后面也会接条件 else if 不可以单独使用
#else //不可以单独使用

#ifndef //if not define 宏的作用只是判断头文件是否被包含
包含头文件的时候定义一个宏 表示头文件已经包含过了,避免头文件的重复包含
#ifndef _INC_STDIO //若果没有定义,那么就定义一个宏
#define _INC_STDIO
#pragma once //防止头文件重复包含 这个文件只会包含一次

#error
#pragma once 头文件只包含一次
#pragma comment(LIB,"WINIMMM.LIB")
#pragma pack(n) 控制结构体对齐的

一、宏定义

1.无参宏定义

测试代码笔记如下:

 //无参宏定义
#include<stdio.h>
#define PI 3.1415926 //定义的一个带参数的宏 作用:文本替换
#define Size 3*4+5
#define HELLO "hello world!"
#define 主函数 int main()
#define 退出 return 0; 主函数
{
printf("%lf\n", PI);
printf("%d\n", Size);
printf("%s\n", HELLO);
getchar();
退出
}

2.带参宏定义

测试代码笔记如下:

 //带参宏定义
#include<stdio.h>
#define M(a,b)(a+b)
#define POW(a,b)(a*b)
//可选值不较少 可以直接用#define定义
//可选值比较多 可以用枚举比较方便
int main()
{
printf("%d\n", M(, ));
printf("%d\n", POW(, ));//POW(3,4)换成3*4 只是替换没有传参
printf("%d\n", POW(+, ));//POW(3+4,4)--->3+4*4 先替换,再计算
getchar();
return ;
}

2019-03-28  15:13:58

C++学习(二十七)(C语言部分)之 预处理命令的更多相关文章

  1. C语言中的预处理命令

    预处理功能是C语言的重要功能. 问:为什么要预处理,什么是预处理? 答:我们知道高级语言的运行过程是通过编译程序(编译器)把源代码翻译成机器语言,实现运行的.编译程序的工作包含:语法分析.词法分析.代 ...

  2. Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发

    一.REST简介 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描 ...

  3. Flutter学习二之Dart语言介绍

    上次我记录了Flutter的环境搭建,这次来简单记录一下Drat语言,Flutter是 Google推出并开源的移动应用开发框架,开发语言是Dart,那么Dart语言和其他的语言在语法上有上面区别呢, ...

  4. ElasticSearch7.3学习(二十七)----聚合概念(bucket和metric)及其示例

    一.两个核心概念:bucket和metric 1.1 bucket 有如下数据 city name  北京 张三  北京 李四 天津 王五 天津 赵六 天津 王麻子 划分出来两个bucket,一个是北 ...

  5. JavaWeb学习 (二十七)————监听器(Listener)在开发中的应用

    监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...

  6. Salesforce LWC学习(二十七) File Upload

    本篇参考: https://developer.salesforce.com/docs/component-library/bundle/lightning-file-upload/documenta ...

  7. ballerina 学习二十七 项目k8s部署&& 运行

    ballerina k8s 部署和docker 都是同样的简单,编写service 添加注解就可以了 参考项目 https://ballerina.io/learn/by-guide/restful- ...

  8. 前端学习(二十七)存储&es6(笔记)

    cookie         存储    以站点为单位的.    必须配合服务器环境    不能跨浏览器    cookie有生命周期     默认是session        session    ...

  9. 20165318 预备作业二 学习基础和C语言基础调查

    20165318 学习基础和C语言基础调查 技能学习经验 我们这一代人,或多或少的都上过各种兴趣班,舞蹈钢琴画画书法,我也是如此.可这些技能中,唯一能拿的出手的就是舞蹈了.按照<优秀的教学方法- ...

  10. IOS学习之十七:Grand Central Dispatch(GCD)编程基础

    IOS学习之十七:Grand Central Dispatch(GCD)编程基础   有过编程经验的人,基本都会接触到多线程这块. 在java中以及Android开发中,大量的后台运行,异步消息队列, ...

随机推荐

  1. 【环境】新建Maven工程步骤及报错解决方法

    新建Maven工程步骤: 1.打开eclipse,File-New-Other-Maven-Maven project 点击Finish,即可创建一个Maven工程.Maven是内置的,不需要额外下载 ...

  2. JAVA的环境变量配置(方式二)

    1.想要成功配置Java的环境变量,那肯定就要安装JDK(JDK安装包在方式一中),才能开始配置的. 2.安装JDK 向导进行相关参数设置.如图: 3.正在安装程序的相关功能,如图: 4.选择安装的路 ...

  3. day1-python简介+安装

    Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有 ...

  4. 三:使用docker-machine安装虚拟机上的docker

    1.docker安装之后自带docker-machine:(需要win10专业版或mac) 2.如何远程管理一个docker-machine?(以下是Mac环境) 关闭本地的docker应用.运行do ...

  5. Edit Distance II

    Given two strings S and T, determine if they are both one edit distance apart. Example Given s = &qu ...

  6. SQL-15 查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列

    题目描述 查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列CREATE TABLE `employees` (`emp_no ...

  7. Vim 文件配置

    cat ~/.vimrc syntax on set nu set encoding=utf-8 set ts=4 set fileencodings=ucs-bom,utf-8,cp936 set ...

  8. ::selection 选择器

    使被选中的文本成为红色:::selection { color:#ff0000; } ::-moz-selection { color:#ff0000; }

  9. Oracle数据库三种备份方案

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用 ...

  10. c# GetType()和typeof()的区别

    c#   GetType()和typeof()的区别 C#中任何对象都具有GetType()方法,返回Type类型的当前对象的类型. GetType()是基类System.Object的方法,因此只有 ...