首页 > 编程知识 正文

c语言宏定义关键字,c语言带参数的宏定义

时间:2023-05-06 17:07:39 阅读:155643 作者:241

的宏观定义总览

1 .无参数宏定义和带参数的宏定义(宏函数) )。

2 .宏置换时机和一般预定义宏

3 .宏使用注意事项(简单替换,dowhile ) ) ) ) ) ) ) )宏使用注意事项(以避免分号的吞噬) ) ) ) ) ) ) )宏使用注意事项) ) 65 )

4 .宏函数的特定用法(#字符串的创建和##粘接剂) )。

正文

#define命令是c语言的宏定义命令。 此命令有两种格式:简单的宏定义和参数化的宏定义。

不带参数的宏定义:#define标识符字符串

说明:

)1)宏名称通常使用大写字母

)2)使用宏可以提高程序的通用性和可读性,减少不一致性,减少输入错误,便于修改。 例如,数组大小的一般宏定义

)3)预处理是编译前的处理,但是编译工作的任务之一是语法检查,预处理不进行语法检查。

)4)宏观定义末尾的不加分

(5)宏定义写在函数的大括号外,作用域为后续程序,通常位于文件的开头。

(6)可以用#undef命令结束宏定义的范围

)7)宏定义可以嵌套

)8)字符串“”永远不包含宏

(9)宏定义不分配内存,变量定义分配内存。

3358 www.Sina.com/65http://www.Sina.com/(# define宏名称(参数表)字符串

示例#defines(a,b ) a*b

area=s (3,2 ); 第一步被替换为area=ab,步骤2被替换为area=32;

像函数调用一样,有带参数的宏定义的过程。

(1)实际参加是仪式的话容易发生问题

#define S r*r

area=s(ab ); 第一步是area=rr; 步骤2是area=a ba b;

正确的宏定义是#defines(* )

)2)请勿在宏名称和参数的括号之间添加空格

)3)宏置换只进行置换,不进行计算,也不进行公式的求解

)4)函数调用在编译后的程序运行时进行,分配内存。 宏替换在编译前进行,不会分配内存

)5)宏的悬挂键中不存在类型,也没有类型转换。

)6)函数只有一个返回值,利用宏可以得到多个值

)7)宏展开会使源程序变长,无法调用函数

)8)宏展开不占用执行时间,只占用编译时间,函数调用占用执行时间)内存分配、现场确保、价值交付、返回值)。

宏函数(TBD ) -预处理期间展开

预处理(预编译)、编译、程序集和链接。

哑实结合

__FUNTION__获取当前函数名称__LINE__获取当前代码行号__FILE__获取当前文件名__DATE__获取当前日期__TIME__获取当前时间

#definetest(m,n ) for ) intI=0; I(n ); I () ) m=I; (3358www.Sina.com/

宏替换时机

使用do{…}while(0)结构的宏定义不受大括号、分号等的影响。

常用预定义宏

在“#”或“# #”位置(在宏定义中很有用),宏参数不会重新展开。 可以通过添加老生常谈的话:这是简单的替换,不要在中间计算结果,一定要替换出表达式之后再算。来实现。 此宏的目的是通过在其中展开所有宏的所有参数,确保变换宏中的宏(str )获得正确的宏参数。

参考:

在c语言中使用宏定义

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。