欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++学习(二十七)(C语言部分)之 预处理命令

程序员文章站 2022-07-02 16:42:14
结构体 联合 枚举 联合 只能保存最后赋值的结果枚举 所有可能值列出来 预处理命令是在编译前期的阶段 代码-(编译)-->可执行文件(exe)预编译 编译前对代码处理 *1.插入头文件的内容 #include *2.宏定义替换 3.删除注释 >注释在预处理阶段全部被删除 *4.条件 ......

 结构体 联合 枚举 

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

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

#----> 预处理符号

 

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

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

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

 

2.文件包含

#include
包含函数定义

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

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

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

添加方式如下:

C++学习(二十七)(C语言部分)之 预处理命令

C++学习(二十七)(C语言部分)之 预处理命令

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

例如:

C++学习(二十七)(C语言部分)之 预处理命令

C++学习(二十七)(C语言部分)之 预处理命令

C++学习(二十七)(C语言部分)之 预处理命令

自己写的头文件

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) 控制结构体对齐的


C++学习(二十七)(C语言部分)之 预处理命令

 

一、宏定义

1.无参宏定义

测试代码笔记如下:

 1 //无参宏定义
 2 #include<stdio.h>
 3 #define pi 3.1415926  //定义的一个带参数的宏 作用:文本替换
 4 #define size 3*4+5
 5 #define hello "hello world!"
 6 #define 主函数 int main()
 7 #define 退出 return 0;
 8 
 9 主函数
10 {
11     printf("%lf\n", pi);
12     printf("%d\n", size);
13     printf("%s\n", hello);
14     getchar();
15     退出
16 }

 

2.带参宏定义

测试代码笔记如下:

 1 //带参宏定义
 2 #include<stdio.h>
 3 #define m(a,b)(a+b)
 4 #define pow(a,b)(a*b)
 5 //可选值不较少 可以直接用#define定义
 6 //可选值比较多 可以用枚举比较方便
 7 int main()
 8 {
 9     printf("%d\n", m(3, 4));
10     printf("%d\n", pow(3, 4));//pow(3,4)换成3*4  只是替换没有传参
11     printf("%d\n", pow(3+4, 4));//pow(3+4,4)--->3+4*4 先替换,再计算
12     getchar();
13     return 0;
14 }

 

 

2019-03-28  15:13:58