嵌入式——C语言:函数②

        函数①的补充:extern(多文件编写一个代码时常用)

一、数组传参

(一)整型数组传递

        1.两种形式

                int        fun(int arr[5]);

                int        fun(int arr[], int len);

        2.注意:数组传递到函数体内部与外部操作是同一数组

(二)字符型数组传递

        int        fun(char str[]);

二、预处理命令

与#相关的内容

(一)宏定义

        1.不带参宏

                #define        PI        3.14

                宏名可以是小写,但是为了与变量区分一般用大写。

        2.带参宏(宏函数)

                #define        MAX(x, y)        x > y ? x : y

                

带参宏 函数
无参数类型、返回值、函数类型概念 有函数类型、返回值、并且实参类型需要转换为形参类型
只是代码替换,无调用传参过程 有函数调用、传参过程
在程序编译时展开,代码体积增大 程序运行时加载,代码体积不增大
没有传参过程,代码执行效率高 函数有传参过程,需要调用,传参产生资源开销
简单代码想要封装模块使用 需要严谨的代码逻辑,多行代码使用

        加括号解决以下问题

嵌入式——C语言:函数②_第1张图片

(二)头文件包含

        1.#include

                1.1#include:包含一个文件,文件会在预处理编译时展开

                1.2<>:在系统目录下查找该头文件

                1.3"":先在当前目录下查找该文件,找不到再到系统目录找

        2.头文件包含

                2.1构造数据类型的定义

                2.2全局变量的声明

                2.3全局函数的声明

                2.4宏定义

        3.工程结构

        嵌入式——C语言:函数②_第2张图片

                3.1main.c负责主函数编写

                3.2功能代码.c负责功能代码编写

                3.3功能代码.h主要负责声明功能代码.c的功能函数

                3.4调用函数的文件只需加对应函数的.h头文件即可使用该函数

(三)条件编译

        #if                                条件满足加入编译

        #elif                             如果if不满足条件elif满足加入编译   

        #else                            if不满足代码加入编译    

        #endif                           条件编译结束

        #ifdef                             定义了宏,代码加入编译

        #ifndef                           没有定义宏代码加入编译

你可能感兴趣的:(嵌入式——C语言:函数②)