C语言define关键字与条件编译深度解析
创始人
2024-12-21 16:26:57
0 次浏览
0 评论
C语言#define关键字,条件编译及预定义符号知识详解
C标准规定我们在文件输入输出、输出日志等情况下会使用这五个预处理符号。否则返回字母以外的字符错误2#define关键字#define有两个功能;一是设置标识符,二是设置宏1。
当指定标识符时;请勿在定义2定义的标识符中包含分号。
定义宏#define机制包含一个允许用文本替换参数的子句。
这种实现通常称为宏或定义宏。
宏不应包含在括号中,以防止由于优先级问题而产生令人难以置信的后果。
字符串中的内容不会发生宏替换。
3、#和##编译器会自动将两个相邻的字符串连接成#一:在字符串中添加参数#a->"a"##可以添加符号。
作为两边的符号4.宏和函数的比较①宏没有类型检查是宏的一个关键特性(但这也是一个隐私风险)。
用多个函数无法实现的动作②宏没有函数调用、返回等额外开销,逻辑复杂,代码量大。
呼叫和回电的覆盖范围很小。
③宏只是替换文本,无法调试;4.宏可以增加代码长度。
将如果计算表达式的结果并且传递给参数宏的参数是表达式,仅替换文本,不执行任何计算摘要:每个宏都使用少量代码。
函数用于大量代码基于C++中宏概念的优缺点使用内联;最好不要使用宏5。
有副作用的宏参数不要将有副作用的参数传递给宏。
参数6.命名约定定义的宏:全部大写功能:不全部大写例外#undefname//撤销宏标识符名称的定义3.条件编译1.如果设置了DEBUG;声明将被执行;如果不,不会这么做2.条件编译3.断面条件编译3.判断是否设置4.嵌套指令预处理指令可以嵌套4.其他1.包含头文件2.#error"..."会遇到#error时产生编译错误Canfittargetspace4.assert(条件语句)是断言的目标字符串的头文件5.可能发生连锁反应。
连锁反应printf("%d",strlen(strcpy(p,helloworld!"))))6、常见错误:编译错误直接指编译器错误信息,即链接器错误函数名、变量名错误、库文件使用错误(第三方库)。
C语言,#define语句的用法。
1.简单宏定义
格式:#define标识符替换列表
描述:替换列表包含数字、文字、标点符号、运算符、标签、关键字、字符常量。
注意:替换列表可以为空
常见错误:
;inta[N];/*带分号的解释会是int[100;]这是一个很常见的错误*/*第一个想法是a和b都是int类型的指针,但实际上它们是int*a,b;a是int类型的指针,b是int类型的变量。
这就是为什么应该使用typedef而不是声明,以便a和b都是int指针。
*/
<
<
常见用法:
您可以使用宏定义根据自己的需要来定义或修改C语言。
语法例程,例如:
定义循环
重新定义数据类型
2.带参数的宏
#define标识符(x1,x2,x3...xn)替换清单(注:x1,x2,x3..是宏的参数,标签和左括号之间不能有空格)
用法:
by
替换为
从上面的例子可以理解,标签被替换为参数列表(X1,X2,X3....)。
(Y1,Y2,Y3....)对应替换,但顺序无关。
B(x)#@x#defineC(x)#xx=1
替换为:
T_1(T_##x,##符号是将前后字符连接在一起的粘性符号。)'1'(#@x,#@符号将宏参数视为字符串文字和``添加符号)1"(#x),#符号将宏的参数转换为字符串字面大小的字符,并添加""符号)
4.多行定义
定义可以在每个新行上替换多行代码“\”
编译就可以了。
编译时带有#define的环境
6.删除宏
7.条件组合
8.预定义宏
C语言中包含一些有用的宏。
__LINE__编译文件的行数
(整数类型)
__FILE__编译文件的名称(字符类型)
__DATE__编译日期(字符类型)__TIME__编译时间(字符类型)
__STDC__如果编译器接受标准C,则值为1。
(整数类型)
通常这些预定义的宏可以用于编译过程中的调试:例如:
当被零除正常发生时,编译器不存在。
参考方法
相关文章
字符常量与字符串常量:C语言中的区别与使...
2024-12-14 21:22:56字符串转数字的三种JS转换方法详解
2024-12-14 14:41:52Excel字符串连接技巧:掌握公式方法,...
2024-12-15 11:10:53多种方法实现求偶数之和与Java统计奇偶...
2024-12-23 11:45:10C++字符串存储揭秘:长度与字节数计算技...
2024-12-16 02:40:55C语言中键盘输入字符串打印方法及fope...
2024-12-15 03:43:00JavaScript字符串处理技巧:自定...
2024-12-15 20:23:16C语言编程技巧:数组元素计数与最大值查找...
2024-12-17 11:02:02C语言实现字符串中指定子串删除技巧分享
2024-12-17 04:19:47深入解析:编程中的字符与字符串区别
2024-12-15 14:01:17最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
C语言字符串常量解析:区别、用途及存储方...
什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...
2
C语言printf函数:格式字符串与输出...
printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...
3
Excel技巧:计算字符串起始位置与合并...
如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...
4
Python发音全解:掌握正确的发音方法...
python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...
5
字符与字符串:编程中的基础文本类型解析
字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...
6
Python编程语言:多领域应用与开发优...
Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...
7
深度解析:C语言编程特点与应用领域
什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...
8
Java全解析:跨平台编程语言的魅力与多...
java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...
9
C语言赋值与相等运算符的区别解析
c语言中=和==有什么区别?1.各种含义:“=”表示赋值。它的功能是将表达式的值...
10
C语言实现字符串next数组:原理与实例...
如何用C语言编写一个字符串的next数组?对于字符串“abcdeabc”,可以通...