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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午7:17
下一篇 2023年2月14日 下午7:20

相关推荐