01、预处理:
//#pragma once // 防止文件重复包含
#ifndef _SUMMER_H_ // 第一次包含的时候 _SUMMER_H_ 没有定义 所以会包含里面所有内容
#define _SUMMER_H_ // 第一次包含的时候会定义这个宏
// 第二个包含的时候这个宏已经
int fun(int x)
{
return x;
}
#endif /* _SUMMER_H_ */
#include <stdio.h>
#include "summer.h"
#include "summer.h"
#include "../summer.h" // 头文件包含也可以使用路径 ../cpp文件夹的上级目录
#include <string>
#define PI 3.1415926
#define Max 3+4
#define snFun "你好"
#define ADD(a,b) (a+b) // 先替换 在计算
#define MUL(a,b) (a*b)
// 打印 y 和y 的值
#define PRINT(y) printf("变量"#y"的值是%d",y) // #y -->(相当于) "y"
#define M(x) pic##x // M(1) --> pic1
/* 其他的预处理命令 */
#ifndef PI
#define PI 3.141592654
#else
#undef PI // 取消原有的宏定义
#define PI 3.141592654
#endif
/*
** 文件操作 w r a
**
**
** 预处理命令 #include
** 写完代码 --> 可执行文件
** 预处理 编译 汇编 连接
** 预处理 主要分为以下:
** 1.宏定义 #define
** 2.文件包含 #include
** 3.条件编译 %if
**
** 1.宏定义
** #define PI 3.1415926
** 在预处理阶段 PI 换成 3.1415926 替代的内容可以是 常量 字符串 或者表达式都可以
** 1.1 带参数的宏定义
** 计算a + b 的值
** #define ADD(a,b) a+b
** 没有类型 比函数稍微方便
** 如果是一些比较长的代码 --> 函数
** 带参数宏定义 没有递归
** --> 先替换在计算
** 1.2 两个操作符(主要用于参数)
** # 连接字符串 sharp
** ## 给变量取名字
** 2.文件包含
** #include <文件名>
** #include "文件名"
** 2.1.<>和""的区别
** 寻找 <> 在include 路径中寻找头文件 没有找到(无法打开头文件)
** "" 项目文件夹中找 若没有找到 再去系统的头文件中找(都没有找到再显示没有打开)
**
** <>范围比较小 "" 比较大
** 系统自己已有的头文件 <> 比较快
**
** 2.2.头文件名字
** shdio.h C语言头文件文件的命名方式 --> cstdio 去掉.h 前面加c
** cmath cstdlib
** iostream C++头文件
**
** string 没有.h C++
** string.h --> cstring
** 2.3 文件包含 头文件的内容复制到包含的位置
** --> 防止文件重复包含 代码:#pragma once // 让头文件只包含一次
**
** 3.条件编译
** 预处理过程中 根据条件决定是否编译
** #if 条件1
**
** #endif
** 可以使用#elif 条件
** #else
** 也可以使用#if嵌套
**
**
**
** #ifndef if not define 重点是:防止文件重复包含
** 4.其他的预处理命令
** 4.1 #undef 取消宏定义
** 4.2 #if defined PI 和#ifendef 相反
** #if !defined PI 和 #ifndef PI 相同
** 4.3 #pragma
** #pragma once // 头文件治只包含一次
** #pragma commment(lib,"winmm.lib") // 连接一个库
** #pragma pack(n) // 设置结构体对齐方式
*/
int main()
{
#if 0 // 宏定义
int x = 68;
PRINT(x);
getchar();
int M(1), M(x); // 定义 pic1 picx
picx = 123; // 也可以这样写:M(x) = 123
printf("%d\n", 5 * ADD(3, 4)); // --> 5*3+4
printf(snFun);
printf("\n%.10lf", PI);
#elif 0 // 头文件包含
fun(1);
#elif 1 // 条件编译
#endif
getchar();
return 0;
}
01、测试:
#include<stdio.h>
//#define _CRT_SECURE_NO_WARNINGS //定义一个宏 去掉安全检查 (不用新函数) 新版VS已经不能用了
int main()
{
int x;
scanf("%d", &x);
getchar();
getchar();
return 0;
}
原文链接: https://www.cnblogs.com/guijin/p/8351915.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/268356
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!