c语言的宏
1. 在c语言中"宏"是什么意思
定义的意思,在C语言中的宏定义就是定义外部变量,内部函数使用exiterm来调用
如:exiterm char c1,c2;
C语言中的宏定义的字是:defineC语言中的define宏定义有带参数的和不带参数两中形式,不带参格式是:#define 宏名,字符串带参格式是:#define 宏名(参数1,参数2,...) 字符串在C语言里宏定义只用来做的宏名替换,而不做语法检查的,因而它不是C语句,所以在宏定义的时候不需要在后面加";"宏也在C里也叫预处理命令,因为宏是在程序编译前先进行字符替换的,所以叫预处理.在C里还有其它的预处理命令如:
#define
#undef
#ifdef等。
2. C语言什么是宏
C中,源程序中用一个标识符表示一个字符串,称为宏。被定义为宏的标识符称为宏名。在编译预处理时对宏名都用宏定义中的字符串代替,成为宏替换,由程序自动完成
3. 什么是c语言里面的宏
简而言之:就是用一个符号代替一堆东西。让代码精简化
4. 在C语言中“宏是什么意思”
宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译
宏定义又称为宏代换、宏替换,简称“宏”。
格式:
#define 标识符 字符串
其中的标识符就是所谓的符号常量,也称为“宏名”。
预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
即在对相关命令或语句的含义和功能作具体分析之前就要换:
例:
#define PI 3.1415926
把程序中出现的PI全部换成3.1415926
说明:
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义不可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。
5. C语言宏定义
这个问题描述的不够详细。
宏定义中有一个很重要的事情就是要给参数加上括号,否则就有可能影响最终的结果。
因为宏只是简单的字符替换。
如:
#defineTIME_TWO(n)(n*2)
//当你参数是单一值是,看起来无影响,比如
TIME_TWO(3)
//会被正确的替换为如下,结果为6
(3*2)
//但如果你的参数本身就是一个表达式,比如
TIME_TWO(3+2)
//那么就会被替换为如下,结果为7,不符合预期
(3+2*2)
//所以宏定义中需要包裹参数防止优先级影响结果
#defineTIME_TWO_PREFECT(n)((n)*2)
//同样调用
TIME_TWO_PREFECT(3+2)
//就会被正确的替换为如下,结果为10,符合预期
((3+2)*2)
6. 在C语言中 宏定义是什么
在C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。
(6)c语言的宏扩展阅读:
宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。
计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
7. C语言宏运算
运行至c=fun(a,&b); 这一行后
a=1,b=3,c=5
因为在fun里,a++只是对这个函数内部的参数进行自加。所以a++不影响main里的a值。但因为b是以指针传入的,所以更改的是存放b的内存单元里的值,所以main中的b值变了。c是return来的。不难理解。
运行至b=fun(c,&a); 这一行后
a=7,b=13,c=5
这里c的值不变,a=(c+1); b=(c+1)+a;
运行至a=fun(b,&c); 这一行后
a=29,b=13,c=15
8. C语言 宏
难道3不能是字符串吗?
"3*pi"是字符串,"3"是它的子串。
"3*pi"宏展开后为"3*3.1415926"也是字符串,整个源程序都被认为字符串!
现在,还有有编译,编译时,编译器会把3*3.1415926当表达式计算,用结果再替换一次!
9. c语言中的宏展开是在什么是进行的/
宏展开是在预处理阶段进行的。
从逻辑上讲,C程序的完整编译通常包括以下几个阶段:
1.预处理:字符集转换、三重跟踪处理、断行连接、条件编译、文件包含、宏定义扩展、转义字符替换和其他预处理命令(#pragma、#line等)。
翻译:预处理后的代码被翻译成词法和语义检查,然后翻译成中间代码。
3.汇编(assembly):将代码替换到目标平台中的目标代码中,得到目标文件(在Windows上是。)Obj)。
4.链接:将目标文件集合转换为最终目标文件(例如:exe和.dll)。
(9)c语言的宏扩展阅读:
宏定义
宏定义是C提供的三种预处理功能之一:宏定义、文件包含和条件编译
无参数宏定义:
宏观定义又称宏观替代,宏观替代,简称“宏观”。
格式:#定义标识符字符串
标识符称为符号常量,也称为“宏名称”。
预处理(预编译)也称为宏展开:用字符串替换宏名。
掌握宏概念的关键是替换。一切都以改变为前提,做任何事之前都要改变,准确理解“改变”的必要性。
复杂的如下所示。下面的宏定义带有参数,多行宏定义,在Linux内核源代码中有很多。
sizeof也是一个宏定义。