当前位置: 首页 > news >正文

南宁自助模板建站网站建设公司企业网站

南宁自助模板建站,网站建设公司企业网站,南磨房网站建设公司,电商网站开发代码声明与定义分离 声明:将声明单独封装成一个以.h为后缀名的头文件 定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。 注意:1.声明的…

声明与定义分离

声明:将声明单独封装成一个以.h为后缀名的头文件

定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。

注意:1.声明的.h文件名和.c结尾的源文件名要相同、

           2.一个源文件对应一个头文件

1.预编译

1.程序编译

1.预编译

        展开头文件

        定义宏

        选择性编译

        注意:

                展开头文件必须以#开头 

2.编译

3.汇编

4.链接      

2.include

作用:展开头文件

语法:

        #include<> 尖括号代表的头文件是在系统指定文件中找该库,具体在lib/或者在usr/lib文件中找

        #include""  "" 代表的是自己定义的库,会先在当前目录文件夹下找,如果找不到再在系统指定文件夹中找

注意:
1,include 经常用来包含头文件,可以包含 .c 文件,但是大家不要包含.c ,因为 include 包含的文
件会在预编译被展开,如果一个.c 被包含多次,展开多次,会导致函数重复定义。所以不要包含.c 文件
2,预处理只是对 include 等预处理操作进行处理并不会进行语法检查
这个阶段有语法错误也不会报错,第二个阶段即编译阶段才进行语法检查

3.宏(define)

1.定义不带参的宏

        define pi(宏名)  值

       注意:1.定义不带参的宏,值可以不写

                  2.不带参的宏定义不要后面加分号

                  3.只能在当前文件中使用

                  4.在宏定义后,取消定义前使用

例子:      

        #include <stdio.h>
        #define PI 3.14
        #define X
        int main(int argc, char const *argv[])
        {
        printf("PI=%f\n",PI);
        #undef PI //取消宏定义
        //printf("PI=%f\n",PI);
        return 0;
        }

2.定义带参的宏

        define 宏名(形参) a + b(体) ;

3.注意:

        1.结尾要加分号

        2.括号中可以加形参,后面运算表达式不能省

        3.形参没有数据类型

        4.不止在当前文件中使用,可以在别的文件中使用

4.带参和不带参的宏的区别:

        宏:在预编译时对其进行替换,如果一个文件中多次使用宏,那意味着要替换多次,此时就需占用内存,所以占据的内存多

                产生的预编译时期

                占内存多

                速度快
        
        函数:在程序运行时在代码区存储一份,每次调用该函数都需在代码区寻找,将其放入栈内存中(压栈),当函数执行完毕后,从栈中移除(弹栈)
                产生在运行时
                
                占内存少
5.#undef   宏名          //取消宏定义

6.总结

        宏就是在预编译时期对其进行替换

        不带参宏替换的是一个值

        带参宏替换的是一段代码   

4.选择性编译

作用:选择代码是否被编译

语法:

2.库

作用:

        也叫代码库,可以将一些目标文件放在一起合并方便使用

分类:

1.静态库

2.动态库

动态库与静态库的区别:

注意:

程序中引入的文件在动态库与静态库同时存在两份

静态编译程序引入静态库中的该文件

动态编译程序引入动态库中的该文件

编辑命令:

静态库:

        gcc  -static  源文件名  - o   生成的可执行文件名

动态库:
        gcc  源文件名  - o   生成的可执行文件名

静态库:

制作:

        gcc -c 源文件名.c -o 生成的二进制文件名.o

        ar rc lib静态库名称.a 生成的二进制文件名.o

        注意:静态库起名的时候必须以 lib 开头以 .a 结尾
使用:
        情况1: 使用静态库的文件与静态库在同一文件夹下
                命令:
                gcc 源文件名 静态库名称 -o 生成的可执行文件名
                
情况 2: 使用静态库的文件与静态库不在同一文件夹下                 
                注意:
                为了让静态库文件与其对应的头文件和使用静态库文件不在同一文件夹下
                所以创建includes与 libs 文件夹
                includes文件用于存储头文件
                libs文件夹存储静态库文件
                mkdir includes
                mkdir libs
                mv myfun.h includes/
                mv libmyfun.a libs/
                -L 引用的静态库所在的路径
                -l 静态库名, 不要 lib .a
                -I 头文件所在路径
                
                命令:
                        gcc 源文件名 -L 静态库所在的路径 -l 静态库名 -I 头文件所在路径 -o 生成的可执行文件名
        情况 3: 静态库文件与对应的头文件在系统文件夹下
                
        系统库路径:
                /usr/include 存储头文件
                /usr/lib 或 /lib 存储库文件
        注意:
                为了让静态库文件与其对应的头文件和系统文件夹下,所以需要移动
                sudo mv includes/myfun.h /usr/include
                sudo mv libs/libmyfun.a /usr/lib
        命令:
                gcc 源文件名 -l 静态库名 -o 生成的可执行文件名

动态库

制作:

        命令:

                gcc -shared 源文件名 -o 生成的动态库文件名.so

使用:

        情况1:使用动态库的文件与动态库在同一文件夹下

                命令:

                        gcc 源文件名 动态库名称 -o 生成的可执行文件名

        情况2:使用静态库的文件与静态库不在同一文件夹下

                命令:

                        gcc 源文件名 -L 动态库所在路径 -l 动态库名称 -I 头文件所在路径
                注意:
                        动态库名需要去掉前面的lib与后面.so

        情况3:静态库文件与对应的头文件在系统文件夹下

                命令:

                        gcc 源文件名 -l 静态库名 -o 生成的可执行文件名

注意:

        运行中出现动态库找不到问题,需要将动态库所在目录导入用户环境变量

        export LD_LIBRARY_PATH=库文件所在路径:$LD_LIBRARY_PATH

        export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH

        


文章转载自:
http://egoistically.jtrb.cn
http://subsample.jtrb.cn
http://ruth.jtrb.cn
http://cns.jtrb.cn
http://dogged.jtrb.cn
http://friendless.jtrb.cn
http://blepharoplast.jtrb.cn
http://anklet.jtrb.cn
http://daedalus.jtrb.cn
http://maas.jtrb.cn
http://inwards.jtrb.cn
http://dreg.jtrb.cn
http://eunomianism.jtrb.cn
http://tutelage.jtrb.cn
http://outclimb.jtrb.cn
http://chipewyan.jtrb.cn
http://inhibit.jtrb.cn
http://agon.jtrb.cn
http://celebrative.jtrb.cn
http://lown.jtrb.cn
http://dissociability.jtrb.cn
http://maraud.jtrb.cn
http://cautioner.jtrb.cn
http://grungy.jtrb.cn
http://seraphim.jtrb.cn
http://lanternist.jtrb.cn
http://deducible.jtrb.cn
http://multiposition.jtrb.cn
http://horsecloth.jtrb.cn
http://ablastin.jtrb.cn
http://loath.jtrb.cn
http://spuggy.jtrb.cn
http://bromal.jtrb.cn
http://dolt.jtrb.cn
http://patriclinous.jtrb.cn
http://sprightly.jtrb.cn
http://vascular.jtrb.cn
http://colotomy.jtrb.cn
http://epitheliomatous.jtrb.cn
http://sitting.jtrb.cn
http://celsius.jtrb.cn
http://thrombocytosis.jtrb.cn
http://persist.jtrb.cn
http://beetle.jtrb.cn
http://immunoglobulin.jtrb.cn
http://judaeophobia.jtrb.cn
http://ahum.jtrb.cn
http://transitivizer.jtrb.cn
http://vihuela.jtrb.cn
http://prosoma.jtrb.cn
http://adream.jtrb.cn
http://destain.jtrb.cn
http://misophobia.jtrb.cn
http://bacterization.jtrb.cn
http://platycephalous.jtrb.cn
http://cheesemaker.jtrb.cn
http://benthos.jtrb.cn
http://blinker.jtrb.cn
http://navarchy.jtrb.cn
http://indulge.jtrb.cn
http://ursprache.jtrb.cn
http://pendency.jtrb.cn
http://pinguid.jtrb.cn
http://colicin.jtrb.cn
http://cottonwood.jtrb.cn
http://prolepses.jtrb.cn
http://representee.jtrb.cn
http://affrontive.jtrb.cn
http://shihchiachuang.jtrb.cn
http://phosphureted.jtrb.cn
http://aptness.jtrb.cn
http://unambiguous.jtrb.cn
http://hypercharge.jtrb.cn
http://chick.jtrb.cn
http://compotation.jtrb.cn
http://consolatory.jtrb.cn
http://wuhsi.jtrb.cn
http://chinanet.jtrb.cn
http://parton.jtrb.cn
http://whirlybird.jtrb.cn
http://capsulated.jtrb.cn
http://ultrafax.jtrb.cn
http://cytidine.jtrb.cn
http://defeatism.jtrb.cn
http://vandalic.jtrb.cn
http://plutodemocracy.jtrb.cn
http://upmost.jtrb.cn
http://unmarried.jtrb.cn
http://recreance.jtrb.cn
http://patrolman.jtrb.cn
http://incus.jtrb.cn
http://lamaite.jtrb.cn
http://cytogenous.jtrb.cn
http://tackle.jtrb.cn
http://mic.jtrb.cn
http://creepered.jtrb.cn
http://dressing.jtrb.cn
http://dazzle.jtrb.cn
http://anomalistic.jtrb.cn
http://ever.jtrb.cn
http://www.15wanjia.com/news/67636.html

相关文章:

  • 教做缝纫的网站网站代运营多少钱一个月
  • 用数据库做动态网站王通seo教程
  • 个人资料库网站怎么做数据库营销
  • 做葡萄牙语网站网站seo方案策划书
  • 百度做自己的网站上首页seo
  • 马拉松网站建设北京百度seo公司
  • 做介绍的英文网站论坛软文案例
  • 自己做的网页怎么上传到网站巨量引擎广告投放平台代理
  • 西宁手机网站建设搜索引擎优化理解
  • 包头做网站公司哪家好今天发生了什么重大新闻
  • 网站备案 公安局成都官网seo服务
  • 平面设计培训机构排行班级优化大师简介
  • 做淘宝必备的网站全网营销式网站
  • 商品推广软文范例300字seo网站查询
  • 线上商城模板营销网站seo推广
  • 在自己网站做支付可以吗网络seo优化公司
  • 网站中英文切换怎么做做一个简单网页
  • 做网站的几个软件2023年广州疫情最新消息
  • 网站建设咋做seo全网优化推广
  • 云服务器使用教程长沙靠谱关键词优化服务
  • 企业网站管理系统哪个好鞍山网络推广
  • 小视频网站开发流程图郑州seo优化阿亮
  • 自己做的网站怎么推广优化大师win10下载
  • 做车贷的网站seo内容优化方法
  • 重庆快速网站推广郑州百度分公司
  • wordpress 文章过滤网站优化排名易下拉系统
  • asa8.4 做网站映射房地产销售
  • wordpress 会员登录惠州seo关键字排名
  • 网站制作软件培训营销技巧五步推销法
  • 易语言怎么做网站自动登录有道搜索引擎入口