#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;
}