//C程序的编译流程
/*
1.预处理:1.将头文件的内容包含进源文件 2.宏替换 3.删除注释 4.条件编译
2.编译
3.汇编
4.链接
5.运行
*/
#include<stdio.h>
#include<stdlib.h>
#define PI 3.1415936
//1.带参数宏定义的语法
// #define 宏名(形参列表) 字符串(宏体)
//2.带参数宏调用方式的语法
// 宏名(实参表);
//3.带参宏定义中,宏名和形参列表之间不能有空格
//4.移除宏可以用
//#undef PI
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MALLOC(n,type) (type*)(malloc((n) * sizeof(type)))
int max(int a, int b)
{
return a > b ? a : b;
}
int main()
{
printf("hello world\n");
printf("PI: %f \n",PI);
//函数和带参宏定义的区别
/* -------- -----带参宏定义-- ------函数--------
处理时间 - 编译时 程序运行时
-------------------------- ------------------
参数类型 - 无类型问题 定义实参和形参类型
----------------------------- ---------------
处理过程 - 不分配内存简单的字符置换 分配内存先求实参值再传给形参
-------------------------- ------------------
程序长度 - 变长 不变
--------------------------------------------
运行速度 - 不占运行时间 调用和返回占时间
--------------------------------------------
支持递归 - 不支持 支持 */
int a = 1;
int b = 2;
//处理过程
printf("max(a,b):%d\n", max(a++, b++));
printf("MAX(a,b):%d\n",MAX(a++, b++));
printf("%d,%d",a ,b);
//参数类型
double c = 3.5;
double d = 4.5;
printf("max(a,b):%.2lf\n", (double)max(c,d));
printf("MAX(a,b):%.2lf\n", MAX(c,d));
//处理过程
int *ptr = NULL;
ptr = MALLOC(10,int);
//ptr = (int*)malloc((10)*sizeof(int));
printf("ptr:%p\n",ptr);
free(ptr);
ptr = NULL;
}
宏定义和函数的区别
最新推荐文章于 2024-05-28 11:13:49 发布