有关宏定义的一些小知识和基础应用

本文介绍了C/C++编程中的预处理指令,包括宏定义如#defineMAX,条件编译#if,#ifdef等,以及头文件的包含和防止重复编译的技巧。此外,详细阐述了预处理、编译和链接三个阶段的作用,举例说明了SwapBit函数用于位操作的实现。
摘要由CSDN通过智能技术生成

#define max 100 //预处理标识符
#define MAX(x,y)  (x>y?x:y) 宏定义
参数列表的(必须和name相邻
#undif 取消一个宏定义
#if (0不编译/1编译)条件编译,满足条件才编译
#endif

#if 
#elif
#endif

#define max
#ifdef max
#endif

## 合并两边,比如 a##1 就是a1
头文件被包含的方式
"" 先在源文件目录查找,找不到就找库函数
<> 直接去库函数找

#ifndef __test.h 如果没有编译过
#define __test.h 那就编译一次
#endif
多次包含只编译一次
#programa once

预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有头文件、宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。
  
编译:将预处理完的文件逐一进行一系列词法分析、语法分析、语义分析及优化后,产生相应的汇编代码文件。编译是针对单个文件编译的,只校验本文件的语法是否有问题,不负责寻找实体。
  
链接:通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。 链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。在此过程中会发现被调用的函数未被定义
 

#define _CRT_SECURE_NO_WARNINGS 1
/*******************************************
* 函数名称:test55.pc                      *
* 存放路径:C:\Users\萌迪迪\Documents\test *
* 作者:huangd                             *
* 时间:2023/3/16                          *
*******************************************/
#include<stdio.h>
#define SwapBit(n) (n = ((n & 0xaaaaaaaa) >> 1) + ((n & 0x55555555) << 1))
int main()
{
    int n = 0;
    scanf("%d", &n);
    SwapBit(n);
    printf("转换后的数字为%d\n", n);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值