宏定义:
无参宏 带参宏 字符串化操作符# 符号链接操作符##
#include"stdio.h"
//带参宏的定义
//#define 标识符(形参表) 形参表达式
#define MAX(a,b) ((a)>(b))?(a):(b)
//可以像函数一样使用 通过实参和形参传递数据
//+运算符的优先级高于比较运算符 所以(a)>(b)这个小括号可以不加
#define F(a) a*a
#define SUM(x) (x+SUM(x))
//函数和宏的区别:
//函数和宏是完全不一样的 函数要求实参与形参类型一致 而宏替换不需要 函数只有一个返回值 而宏替换可能有多个
//函数影响运行时间 而宏替换只影响编译时间
//为防止无限制递归展开,当宏调用自身时,不再继续展开
//若程序中有SUM(100) 则被展开为100+SUM(100)
//宏定义如果需要换行时 需要加“\”连接 例如:
#define MAX_S(x,y)({
\
const typedef(x)_x = (x); \
const typedef(y)_y = (y); \
(void)(&_x == &y); \
_x

本文深入探讨了C语言中的宏定义,包括无参数宏定义、带有参数的宏以及特殊的宏操作符#(字符串化)和##(符号链接),这些内容对于理解和使用预处理器宏至关重要。
最低0.47元/天 解锁文章
1263

被折叠的 条评论
为什么被折叠?



