C语言,运行共享文件夹里程序一个多文件程序

Linux下面C语言多文件编译_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Linux下面C语言多文件编译
来源:Linux社区&
作者:workformywork
刚开始学习Linux下面的C语言开发,以前只是在Windows下面写过简单C语言的代码,所以对Linux下面的C语言编写不慎了解,这几天看了看相关文章,总算有个一知半解了。
首先打开命终端(Alt+Ctrl+T),用Vim编写三个文件main.c, stack.c, stack.h
#include&stdio.h&#include"stack.h"
void main() {&&S&push(&stack, 1);&pop(&stack, &elem);}
typedef struct Stack {&int *&}S
extern void push(Stack *stack, int elem);extern void pop(Stack *stack, int *elem);
#include&stdio.h&#include"stack.h"void push(Stack *stack, int elem){&printf("this is push function\n");}
void pop(Stack *stack, int *elem){&printf("this is pop function\n");}
这三个文件都在同一文件夹下面,这时可以使用命令:gcc main.c stack.c stack.h -o mian直接在命令行中编译,但是为了学习使用Makefile 就写了一个文件用于编译
Makefile文件:
main: main.o stack.o&gcc main.o stack.o -o main
main.o: main.c stack.h&gcc -c main.c
stack.o: stack.c stack.h&gcc -c stack.c
这样直接在终端中运行make就可以进行编译了... 如果编译的文件不在同一文件夹下面,则在Makefile文件中写明源文件的路径即可...
推荐阅读:
C++ 隐式类类型转化 Implicit Class-Type Conversions
C语言变长数组之剖析
C语言需要注意的问题
C语言位域的使用及其注意点
C语言中简单的for循环和浮点型变量
《C语言从入门到精通》.(王娣,韩旭 ).[PDF] + DVD视频光盘文件
相关资讯 & & &
& (12/28/:34)
& (11/22/:35)
& (02月26日)
& (12/27/:56)
& (10/30/:58)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款C语言中一个多文件程序的运行方法_论文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言中一个多文件程序的运行方法
中国最大最早的专业内容网站|
总评分0.0|
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。&用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。
  举例说明:项目文件夹project下有main.c、common.c和common.h三个文件,其中common.h文件分别#include在main.c和common.c文件中。现在希望声明一个字符型变量key,在main.c和common.c中公用。
  有人想,既然是想两个文件都用,那就在common.h中声明一个unsigned char key,然后由于包含关系,在main.c和common.c中都是可见的,所以就能共用了。
&&&&& 想起来确实有道理,但是实际写出来,我们发现编译的时候编译器提示出错,一般提示大概都类似于:Error: L6200E: Symbol key multiply defined (by common.o and main.o).也就是说编译器认为我们重复定义了key这个变量。这是因为#include命令就是原封不同的把头文件中的内容搬到#include的位置,所以相当于main.c和common.c中都执行了一次unsigned char key,而C语言中全局变量是项目内(或者叫工程内)可见的,这样就造成了一个项目中两个变量key,编译器就认为是重复定义。
&&&&&&正确的解决办法:使用extern关键字来声明变量为外部变量。具体说就是在其中一个c文件中定义一个全局变量key,然后在另一个要使用key这个变量的c文件中使用extern关键字声明一次,说明这个变量为外部变量,是在其他的c文件中定义的全局变量。请注意我这里的用词:定义和声明。例如在main.c文件中定义变量key,在common.c文件中声明key变量为外部变量,这样这两个文件中就能共享这个变量key了。
&&&&(1)main.c文件
& #include&&common.h&
&unsigned&char&
  (2)common.c文件:
& #include&&common.h&
&extern&unsigned char&
&& 其实就是变量定义和变量声明的区别,变量定义使用&数据类型+变量名称&的形式,编译器需要给他分配内存单元的;而变量声明使用&extern 变量类型+变量名称&的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。
&&&&&1、普通变量定义成全局变量
&&&&&如果是普通类型,完全可以不用*.h文件,直接在*.c文件中定义,在调用文件处用extern 声明,因为对于普通类型,编译器是可以识别的。比如在一个 my.c文件中,我定义了char name[10];那么在别的文件中只要用extern char name[](由于是声明,一位数组可以省略大小,但不建议用指针,比较指针和数组是两回事)外部声明就可以了,告诉编译器这个变量我已经定义过了,具体怎样,你慢慢找吧。这符合常理,因为char是编译器能自主识别的类型。
&&&&&2、自定义结构体类型定义成全局变量
&&&&&不同于普通类型,如果不预先通知编译器,编译器是不会识别你自定义的类型的。这个时候,*.h文件便出现了。不是定义结构类型不占内存吗?那好,我大结构体的定义放在*.h文件中,这样一来,无论你incude无数次,内存都不会被占用的。而且这样还有个好处,在别的文件中可以include这个*.h文件,这样,在这个文件中,编译器就可以识别你的自定义类型了,目的不就达到了?&&假如我在global.h中定义了
typedef struct _POSITION
}POSITION;
那么我可以在一个global.c文件中实现全局变量的定义,不过要include那个*.h文件,比如
/* ***global.c ******* */&
include &global.h&
POSITION current,;&&
这样就定义了cunrrent这个变量,在别的文件中引用这个变量时,只要extern POSITION current;进行声明,然后就可以用了,不过这个文件也还得include &global.h& 因为如果不包含,在这个文件中是不识别POSITION类型的。
1.如何引用一个已经定义过的全局变量?   
答:extern  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
2.全局变量可不可以定义在可被多个.C文件中?为什么?   
答:可以,在不同的C文件中以static形式来声明同名全局变量。   可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号C语言中一个多文件程序的运行方法--《电脑编程技巧与维护》2013年18期
C语言中一个多文件程序的运行方法
【摘要】:介绍了C语言在处理多个文件时采用的两种方法:利用Turbo C提供的"Project"菜单和编译预处理的文件包含命令把多文件的处理转化为单文件处理的方法。通过实例介绍了它们在程序设计中的应用。
【作者单位】:
【关键词】:
【分类号】:TP311.11【正文快照】:
1引言C语言是一门通用的、模块化、程序化的编程语言,被广泛应用于操作系统和应用软件的开发。C语言是以函数作为程序设计的基本单位的,C语言对于输入和输出的处理也是通过函数调用来实现的。各种C语言编译器都会提供一个函数库,其中包含有许多标准函数,如各种数学函数、标准
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【引证文献】
中国硕士学位论文全文数据库
邹如飞;[D];北京工业大学;2014年
【共引文献】
中国期刊全文数据库
钟惠芳,王桂棠;[J];广东机械学院学报;1996年02期
罗丽霞;;[J];电子技术与软件工程;2014年22期
高永惠;[J];湖南科技学院学报;2005年05期
钟萃相,黄育潜;[J];计算机与现代化;1996年03期
李双美;[J];辽宁大学学报(自然科学版);2000年04期
常鑫;;[J];内蒙古科技与经济;2012年01期
姜凌,霍龙;[J];沈阳电力高等专科学校学报;1999年01期
李树梅;;[J];信息技术与信息化;2013年02期
胡益飞;[J];微电机(伺服技术);2001年04期
娄梅枝;[J];郑州工业大学学报;1998年03期
中国硕士学位论文全文数据库
李智;[D];江苏大学;2008年
梁浩;[D];内蒙古科技大学;2009年
刘庆;[D];东北石油大学;2013年
王智;[D];内蒙古大学;2014年
赵巍凯;[D];西安电子科技大学;2014年
李剑峰;[D];西安电子科技大学;2013年
戴勇;[D];中国科学院大学(工程管理与信息技术学院);2014年
【同被引文献】
中国期刊全文数据库
傅若农;[J];分析试验室;2003年02期
傅若农;;[J];分析试验室;2011年05期
罗伟栋;张云;周浩林;;[J];分析仪器;2010年06期
罗伟栋;张云;周浩林;褚渊;;[J];分析仪器;2011年05期
郭明华;[J];甘肃冶金;2005年03期
张毅刚;;[J];国外电子测量技术;2006年06期
黄定华,孙炳达;[J];工业控制计算机;2001年05期
郭冰;;[J];石油化工自动化;2007年05期
许艳;;[J];生命科学仪器;2010年03期
孙凌燕;黄允千;;[J];实验室研究与探索;2008年04期
【相似文献】
中国期刊全文数据库
杜津玲;郁红蕾;;[J];电脑学习;2009年03期
刘冲;张玮炜;;[J];黑龙江科技信息;2012年29期
顾荣杰;范剑波;;[J];宁波工程学院学报;2012年04期
王凤英;[J];山东工程学院学报;1997年03期
,岐艳芳;[J];微计算机信息;2004年10期
郝强;肖仁锋;;[J];济南职业学院学报;2008年02期
朱正国;;[J];电子科技;2013年07期
麦智祥;[J];电脑编程技巧与维护;1994年03期
吕强;[J];计算机与现代化;1999年06期
祝玲;;[J];计算机光盘软件与应用;2012年14期
中国重要会议论文全文数据库
田晓萌;;[A];第一次全国计算机安全技术交流会论文集[C];1986年
冯莎莎;张永刚;孙吉贵;;[A];2005全国计算机程序设计类课程教学研讨会论文集[C];2005年
胡运发;何伟;;[A];第十一届全国数据库学术会议论文集[C];1993年
苏波;陶宁;;[A];年教育部高等学校光电信息科学与工程专业教学指导分委员会及协作委员会2010年全体会议论文集[C];2010年
苏波;;[A];中国光学学会2010年光学大会论文集[C];2010年
华西艳;王立民;;[A];增强自主创新能力 促进吉林经济发展——启明杯·吉林省第四届科学技术学术年会论文集(上册)[C];2006年
朱俊杰;;[A];第三届全国结构工程学术会议论文集(上)[C];1994年
刘华昌;李东杰;谈效华;;[A];2008'中国信息技术与应用学术论坛论文集(一)[C];2008年
王留奇;;[A];第二届中国航空学会青年科技论坛文集[C];2006年
中国重要报纸全文数据库
记者 连晓东;[N];中国电子报;2005年
陈智罡;[N];中国电脑教育报;2003年
广东 张则;[N];电子报;2010年
广东 张则;[N];电子报;2010年
H[N];电脑报;2003年
磁动力工作室
明浩;[N];电子报;2005年
广东 张则;[N];电子报;2010年
磁动力工作室
明浩;[N];电子报;2005年
磁动力工作室
明浩;[N];电子报;2005年
广东 张则;[N];电子报;2010年
中国硕士学位论文全文数据库
张壹;[D];华中科技大学;2013年
陈文渊;[D];山东师范大学;2011年
高攀;[D];电子科技大学;2005年
郭邦财;[D];武汉理工大学;2011年
景俊士;[D];电子科技大学;2002年
崔凯;[D];南京航空航天大学;2006年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号建立和运行包含多个文件的程序的方法(C语言)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
建立和运行包含多个文件的程序的方法(C语言)
&&学C语言 必须会的,
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 bat文件运行java程序 的文章

 

随机推荐