1. 关于C语言多文件编程.H.C的问题
头文件就是给一个文件编译时用的。比如你调用了一个函数,但在另一个c文件实现。最终会被链接形成可执行文件
2. C语言多文件编程问题
main.c修改后如下:
#include<stdio.h>#include<memory>#include<stdlib.h>#include"student.h"intmain(){printf("Helloworld!");student*head;head=(student*)malloc(sizeof(student));shuru(head);shuchu(head);return0;}
student.c修改后如下:
#include<stdio.h>#include"student.h"voidshuru(student*head){printf("id:");scanf("%d",&head->id);printf("mark:");scanf("%d",&head->mark);}voidshuchu(student*head){printf("id:");printf("%d",head->id);printf("mark:");printf("%d",head->mark);}
student.h不用修改
3. C语言中,如何用多个文件编写程序
将一个函数写抄在一个文件里,袭然后再在另一个文件里用“include”包含这个文件。举个例子在文件c1.c里编一个函数:voidprintword(){printf("Hello!world!");}再建立一个文件c2.c,文件开头写上#include"c1.c",就可以调用c1.c里的函数printword()了
4. 怎么编译多个c语言文件
1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译回过程中,编译器答首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。
5. C语言、C++:关于多文件编程
你如果是用编译器自动生成的文件,编译器自动加到项目里,自己写的,你要手动在项目中添加文件,编译器才会检索,编译器只检索属于项目的文件1,.c或者.cpp不需要包含,如果你是用VS系列,.h和.cpp是一对的,你包含了X.h就是能使用X.cpp的资源、你自己想包含的话那也无所谓,一般是编译器做的2 .h可以添加实现,一切都可以添加。但是为了代码的隐藏和符合编程的机制,一般都放到对应的.cpp。简短的函数可以直接放在.h,你自己找起来也方便3.包含了.h就能直接使用对应的.C。项目中这种事情一般让编译器去实现。其实编译的时候,编译器会自动检索所有文件,只要你有声明,实现不管你写在哪,编译器都会找到的,写在对应的.h和.cpp是为了方便和规范的需要
6. c语言编程为什么要多文件呢
源代码确实是多文件的。不过编译好的目标代码在运行期调入内存后就无所谓文件的概念了,然而不同代码段之间的界限仍然存在。模块化主要有以下几个优点:1.便于复用代码。通用性强的重复的功能只要写一遍就可以了,下次要用在其它程序上时只要更改很小的部分或者可以不用更改。2.便于多人协作。在设计软件之初就可以很清楚地分配各个开发部门的任务。模块的编写者本身只要关注他所写的东西,清楚这一部分的功能,留出接口就可以了。另外,对于整个工程的负责人而言,这样会方便浏览全局的工作进度,统筹人员安排。3.便于修改和维护。如果能确定只是某个模块有问题,在模块内解决即可,不需要牵一发而动全身。要升级某一部分的功能,可以只针对具体的模块重新开发,节约成本。其实不只是C语言,许多其它语言也经常使用这种方法。开发大型软件时这种方法非常有效(否则不明显,或者反而有副作用)。对于软件设计来说这不仅仅是一种风格,而是一种方法学了。声明include包含的函数是声明外部函数,只是extern关键字可以省略。声明后直接调用就可以了。—-[原创回答团]
7. 如何用VC++建立多文件编程
就是建一个工程:打开VC++,执行“文件”——“新建”命令,单击“Win32 Console Application”选项后,在“工程”文本框中输入“prog10_1”,在“位置”中选择“c:\programming”后,“位置”文本框中即显示“c:\programming\prog10_1”.选择“创建新工作区”选项,单击“确定”按钮后,在选择“An empty project”选项,即建立了一个工程。添加源程序:执行“工程”——'添加工程"命令,在file中选择prog10_1.cpp,并以同样方式选择prog10_1_2.cpp和prog10_1_3.cpp后,就将三个源文件全部添加到了工程中。在左侧窗口中单击"File view"选项卡,再单击"Source File",此时双击某个源文件名,在右侧窗口中即显示相应的源程序。
8. c语言编写和编译多文件的程序
第一个问题请问,我是不是该这样做:在main.c中#include在fun.c中同样#include(好像是必需的,请详细解释)这是必需的。因为编译器只是把包含文件的代码复制过来,既然你二个文件中都用到头文件的内容,那当然要包含头文件,否则就会出错。我的观点,如果这两步都是必需的那么当有很多个比如10个.c程序每个里头都要#include那么文件是不是会特别大,当有100个.c程序都要包含一下的话,那么不是非常重复么?)那当然是会重复的。不过这个对程序的运行效率没任何影响,只是在编译过程中对文件的分析时间会稍长些,这也是没有办法的事,全看代码编写者如何组织结构了。第二个问题:会的。解决的方法就是在可能被多次包含的头文件中开头加上#pragmaonce,那样就可以保证此头文件代码只被执行一次,而不会造成头文件中函数多次重复定义至于引起这种情况的情况。当然你也可以自己用#ifdef等预编译处理来解决。你问的问题不就是这种情况么?main.c和fun.c中都包含头文件tou.h第三个问题:当我在main.c中这样#defineuncharunsignedchar那么当我在fun.c中还需要重新创建替换宏unchar吗可以不在创建而直接使用吗?答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。
9. C语言多文件编程 Linker Error: _funcName defined in mole XXX.c is plicated in mole XXX.c
链接错误:多个.c文件同时实现了同一个函数。原因:main.c包含了sm.c, login.c也包含了sm.c.所以导致sm.c里面的函数在编译后有三个实体,链接器不知道链接哪个了。解决:1.将函数,变量的声明和实现分开,分别写在.h和.c文件里。 2.#include只用来包含.h文件,不用来包含.c文件。
未经允许不得转载:山九号 » c语言多文件编程|C语言中如何用多个文件编写程序