从零开始学习嵌入式第12天

预处理:1.编辑  2.编译 3运行4调试

编译过程:

        1.预处理(预编译):将代码中相关的预处理指令执行,最终生成一个只包含C语言的程序。指令为:gcc -E file.c -o file.i.将源程序中预处理指令翻译为c语言程序。

               1.宏定义:

                        语法:#define 标识符 字符串。

                                  #define 宏名 宏值。

                        注意:预处理命令都是以#开头

                                  宏名 命名规则和之前标识符命名规则一致。

                                 宏名的定义建议写成大写,与区别普通变量。

                                 预处理实际上是将宏名用宏值原样替换。(文本替换)c语言字符串中出现的“”宏名“不会被替换。

                                宏名的作用域:从定义开始到#undef结束。

                        #undef 宏名:表示取消宏名的作用。

                                 应用:1.提高代码可读性。2一改全改,方便代码修改。

        2.带参宏定义:(又叫宏函数,但是与函数不同)

                语法:#define 宏名(参数) 宏值

                        eg;#define ADD(a,b) a+b;

                注意:1.带参宏和函数有本质的区别

                                1.处理阶段不一样:宏定义----预处理阶段;函数----编译阶段。

                                        宏的参数,只是进行文本替换,不进行语法检查。函数的参数是有类型的,编译阶段要进行类型检查。

                                2.使用不一样: 宏---预处理阶段使用结束;函数-----调用时,进行使用。

                              3.应用:对于短小代码,考虑写成带参宏。

                宏的副作用:因为原样替换,可能会有运算优先级的改变,导致结果出差错。

                        处理:把能加括号的地方都加上括号。

                        2.宏定义必须写在一行。  \ 是续航符,可以进行多行书写,但是 \后面不能又空格。

                2.文件包含:

                        #include<文件名>

                        #include"文件名"

                                区别:在于在查找头文件的方式不一样,<>到系统默认的路径寻找对应的头文件,”“表示先到当下目录下寻找头文件,如果没有,再到系统默认路径寻找。

              3.条件编译:

                        #if 标识符

                                程序段1

                        #else

                                程序段2

                        #endif

                用途:调试代码。设计头文件。

                #ifndef......

                #if 表达式 程序段1 #else 程序段2  #endif:含义:表达式为真,处理程序段1,为假,处理程序段2

        2.编译:指令:gcc -S file.i -o file.s.将预处理后的程序翻译成汇编语言程序语言。

        3.汇编:指令:gcc -o file.s -o file.o.将汇编程序翻译成二进制文件。

        4.链接:指令:gcc file.o -o file.将使用到的其他代码链接到一起生成最终的可执行文件。

指针:

        1.指针的概念:指针就是地址,地址就是内存单元的编号

        2.指针也是一种数据类型,它是专门用来存放地址这种数据的。

        3.语法:基类型 * 指针变量名。

        4指针变量的引用:*运算符。可以取得指向对应地址内的值

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值