如何把一个复杂的C语言源代码分成几个文件,然后在dev c++上进行多文件编译?

作者&投稿:代垄 (若有异议请与网页底部的电邮联系)
DEV-C++中c语言的文件编译 的时候自动生成了一个makefile.win的文件而且编译器在该文件中报错。~

这不是在make文件中报错的,调试报错信息需要从最开头开始查看,你的main.c文件中有3个未定义的引用。分别是:initwindows、beginpaint、endpaint.还有一个指针没有初始化指向了0x0地址。所以程序编译被错误中断了,没有生成exe文件,所以make文件在执行exe文件时找不到目标。上面缺少的那些引用应该是用来绘制窗体的函数,应该是位于哪个系统头文件中,你的代码中应该是没有添加相应的头文件引用才导致上述问题的。另外,指针在使用之前一定要初始化,通过函数赋值以后一定要判断是否赋值正确(一般判断是否为NULL)

对用户来说不必知道 stdio.h 的路径;只要系统设置中头文件的路径设置正确,用户直接写成 #include就行。

假设我们要更改的源代码如下:


我们的任务是把xx写成一个头文件,将ff写成一个头文件。


头文件基本格式:


#ifndef _xx_h_

#define _xx_h_


//do something


#endif


第一步:首先将每个头文件写好,如下:

注意在源文件使用头文件时要用“”而不能用<>,即:

#include "ff.h" 而不是 #include <ff.h>


第二步,将源代码写好后的运行结果:

这就可以了。程序能运行出结果了。


需要注意的一点:文件要在同一路径。如下图:

必须这样做!否则编译器将找不到头文件,会报错,会出现:

    


//我引用了一个未定义的头文件 ErrorTest.h:

即“No such file or directory”    就是没有文件或者路径。说明你的路径写错了,在编程时务必要注意一下。



首先备份原来的文件,下面步骤正式开始:
(这类的工具我不了解有没有,但自己来一定会有收获的)

1. 先在代码中找所有函数的定义,以及所有全局变量的定义,前面加上extern。
比如:我实现了一个函数:int a(){return 0;},那么它的定义就是int a();//extern省略
或:我声明了一个全局变量:int b=0; ,那么在头文件中他就是extern int b;

2. 创建一个头文件,里面写好收集好的定义,这个名字我建议用defines.h。

3. 把原来文件按功能或一定类别分开,写入各个.c文件中,记得用名字区分。

4. 各个.c文件的开始都加上: #include "你给头文件起的名字如defines.h"

5. 编译,可能会有函数未声明的警告或变量未声明的错误,在头文件里加上就可以了。

可能有人会说为什么要拆,拆开杂乱无章的多麻烦。
拆开对于IDE和编译器来说的负担咱不用管,拆开时对人的负担可能很大,
但拆开后人是会轻松很多的,分块对于编程效率提高也是很重要的。尤其是方便优化调试

Baidu makes me sick!!!

将所有子程序的声明放在头文件.h里,对应的定义放在同名的.c文件里,主程序的文件和这两个文件都放在同一目录下,举例说明
void function1(void); //声明
void function1(void);//声明
main()
{ .................
function1();
function2();

.................
}
void function1(void)
{
..................定义
}
void function2(void)
{
..................定义
}
/************************************************
你想要的效果如下*/
#include "my_functions.h"
main()
{ .................
function1();
function2();

.................
}
/*************************************
将方程的声明放在文件my_functions.h里*/
void function1(void); //声明
void function1(void);//声明
/*************************************
将方程的定义放在文件my_functions.c里*/
void function1(void)
{
..................定义
}
void function2(void)
{
..................定义
}

把C语言源代码,按功能划分模块;
每个模块一个c文件,由一系列函数完成;
(正规的做法,还需要添加对应.h文件,用于声明c文件里面的函数,结构体等等等等)
然后把所有c文件都加入到dev c++的项目里面,编译就可以了

将功能上可以归结一个集合的函数写到同一个.c文件,其他函数若要用到该.c文件内的函数,只需在头文件中include包含就可以了,可以参考面向对象编程。


电脑编程C语言把代码复杂化
常用的C语言IDE(集成开发环境)有Microsoft Visual C ,Borland C ,Watcom C ,Borland C ,Borland C Builder,Borland C 3.1 for DOS,Watcom C 11.0 for DOS,GNU DJGPP C ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C等等......

一个既超级简单又超级复杂的C语言问题:
楼上的回答都很高深,没看明白。把我的理解也说下:C语言中的字符串(C++中叫做C风格字符串),他的一个最大特点就是以NULL结尾。所以他的存储空间比实际字符数多一个。C风格字符串,在C中是标准库类型,不是C的内置类型。他的内存管理由程序负责。内存管理不好会产生溢出。malloc和free是C语言中...

c语言运用在化工原理当中,有一个看起来比较复杂的问题,希望大家能帮 ...
初步判断是溢出了``.建议用double,不要用float了 void main(){ double ws=0,ws1=0,x=0,x1=0,a=0,tj=0,tt=0,b=0,c=0,d=0,e=0;printf("输入ws,ws1\\n");scanf_s("%f %f",&ws,&ws1);x=0.64-ws;x1=0.7-ws1;b=sqrt(pow(0.75,2)-pow(x1,2));c=asin(x1\/0.75...

能够编制出功能复杂的程序是C语言的特点吗?
能够编制出功能复杂的程序不是C语言的特点。C语言主要特点:1、简洁的语言:C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,...

C语言是什么? 要怎么编 ? 用什么编?
1.一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5.每一个说明,每一个语句都必须...

如何把多个C语言程序(最终为.hex)编写到一个程序中?
很容易,合并到一起,去掉重复的子程序和变量基本就可以了。处理变量时需要注意一下,同名不同功能的不能简单的合并,要改名。

什么是C语言
printf("c语言世界www.vcok.com,您好!\\n");} main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,且只能有一个主函数(main函数)。函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。#include#includemain(){double ...

C语言是一种什么语言?
我们不难看出软件工程的复杂程度是很大的。理工科高等院校把c语言作为一门基础课程,也是为了给社会培养信息技术人才。众所周知,养成一个好的习惯是非常重要的,所以c语言程序设计作为大多数工科院校学生接触的第一门程序设计语言(有的院校讲pascal),就应该让学生树立正确的观点。那么当前的程序设计教学也必须以切合将来...

搞懂这8个C语言问题,你也能进大厂
高懂这8个c语言问题,你也能进大厂 1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 #define SEC_YEAR (365*24*60*60)UL考察点:1.#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)。2.懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有...

C语言文件的编译与执行的四个阶段并分别描述
开发C程序有四个步骤:编辑、编译、连接和运行。任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。1、预处理:导入源程序并保存(C文件)。2、编译:将源程序转换为目标文件(Obj文件)。3、链接:将...

满城县13387312033: 如何把一个复杂的C语言源代码分成几个文件,然后在dev c++上进行多文件编译? -
公饺奥硝: Baidu makes me sick!!!将所有子程序的声明放在头文件.h里,对应的定义放在同名的.c文件里,主程序的文件和这两个文件都放在同一目录下,举例说明 void function1(void); //声明 void function1(void);//声明 main() { ................. function1(); ...

满城县13387312033: 一个C语言源程序总体结构分为几个部分?
公饺奥硝: 一个C语言源程序总体结构分为 输入、数据处理、输出 三个部分. 对于简单得C程序一般通过赋值来完成数据处理..

满城县13387312033: C语言中多个语句能否写在同一行上,能否把一条语句分成几行写? -
公饺奥硝: C语言中多个语句可以写在同一行上,可以把一条语句分成几行写,操作方法如下: 1、首先在编程软件中,点击文件->新建一个C++工程. 2、然后在工程中输入代码. 3、代码的运行结果.从上到下:b=20,a=100.由此可知:复合语句先算小范围的,再算大范围. 4、将上面的代码改一下. 5、代码改后,从上到下是b=20.c=30,a=100,由此可知符合语句是先上后下,先内后外.

满城县13387312033: 怎样把一个.c程序改成多个.c程序 -
公饺奥硝: 先新建几个.C程序,放在同一个工程目录下 并且所有的.C程序之中只能有一个main函数.然后给其余的.C程序进行头文件声明: 比如,假设你将你那个程序内的train函数放在一个train1.C文件内; 那就新建一个train1.h的头文件; 并在这个头文件中写上train函数的声明以及这个.C文件中有使用到的默认头文件等等; 在需要使用到这个函数的.C程序内开头加上#include .记得函数名不要和.C文件名相同.注意下每个函数中如果有使用到相同的变量,除了在这个函数中需要定义这个变量以外,还要在main函数所在的.C文件中做一个外部变量的声明,extern int a...之类的.最后调试运行应该就可以了.

满城县13387312033: c语言中我想要把函数分成几个不同的文件存放 -
公饺奥硝: 在主函数中定义全局变量,例如 int gVal; 在其它文件中需要用到这个变量时,用下面的语句声明 extern int gVal;

满城县13387312033: c# 把一个程序文件分成多个?
公饺奥硝: 可以 声明为部分类就可以了使用 partial 关键字如下a.cs public partial class a{}b.cspublic partial class a{} ..............

满城县13387312033: 用c语言 写一段代码把打文件分成几分 然后在其他电脑上又把这几个文件合起来 -
公饺奥硝: fopen fwrite 反复使用就可以了啊 偏移量的大小改为整个文件大小/想要分的文件的个数;分开存储,然后在其它电脑上反向操作就可以了

满城县13387312033: 求C语言编程文件的分割与合并源代码与程序框图(课程设计) -
公饺奥硝: c语言的把一个文件分成相等的两个文件.#include int main() { int len=0; int len2=0; FILE* stream; FILE* stream1; FILE* stream2; char buf[50]; char buf1[50]; char buf2[50]; char text[1024]; printf("input anfile path to open:"); scanf("%s",buf); ...

满城县13387312033: C语言 写一个程序将一个文件分成固定大小的几个文件 -
公饺奥硝: 展开全部#include#include#include FILE *in,*out; char filename[50],ch,cfilename[50]; void space() { char ext[6][6]= { "a.txt","b.txt","c.txt","d.txt","e.txt","f.txt" }; unsigned long int n=1,k,byte=0; unsigned int j=0,i=0; printf("Please input ...

满城县13387312033: 一个C语言小程序的源代码分成了两个部分,怎么运行? -
公饺奥硝: 你把这两部分的程序以头文件的形式包含到你需要的程序文件中,这样你就可以在其他的文件中使用sample.h sample.c里面的内容了!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网