当前位置:首页 » 编程软件 » c多文件编程

c多文件编程

发布时间: 2022-02-26 22:41:59

1. c ++多文件编程用一个头文件作为各文件接口的程序编写实例

//文件A.h
class CInterface;
class CA
{
public:
CA(CInterface* pinterface)
{
m_pInterface = pinterface;
}
void fun_a()
{
printf("fun_a\r\n");
}
CInterface* m_pInterface;
};
//文件B.h
class CInterface;
class CB
{
public:
CB(CInterface* pinterface)
{
m_pInterface = pinterface;
}
CInterface* m_pInterface;
};
//文件C.h
class CInterface;
class CC
{
public:
CC(CInterface* pinterface)
{
m_pInterface = pinterface;
}
CInterface* m_pInterface;
};
//接口文件类

class CA;
class CB;
class CC;
class CInterface
{
public:
void create_obj()
{
m_pa = new CA(this);
m_pb = new CB(this);
m_pc = new CC(this);
}
CA* get_a()
{
return m_pa;
}
CB* get_b()
{
return m_pb;
}
CC* get_c()
{
return m_pc;
}
private:
CA* m_pa;
CB* m_pb;
CC* m_pc;
};
int main()
{
CInterface test;
test.create_obj();
//文件c调用文件a的过程
//通过这种方法,可以访问所有文件,且实现分离

test.get_c()->m_pInterface->get_a()->fun_a();
return 0;
}

2. 怎么编译多个c语言文件

1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。

3. C语言中,如何用多个文件编写程序

将一个函数写在一个文件里,然后再在另一个文件里用“include”包含这个文件。举个例子 在文件c1.c里编一个函数:
void printWord(){
printf("Hello!world!");
}
再建立一个文件c2.c,文件开头写上#include"c1.c",就可以调用c1.c里的函数printword()了

4. C语言、C++:关于多文件编程

你如果是用编译器自动生成的文件,编译器自动加到项目里,自己写的,你要手动在项目中添加文件,编译器才会检索,编译器只检索属于项目的文件
1,.c或者.cpp不需要包含,如果你是用VS系列,.h和.cpp是一对的,你包含了X.h就是能使用X.cpp的资源、你自己想包含的话那也无所谓,一般是编译器做的
2 .h可以添加实现,一切都可以添加。但是为了代码的隐藏和符合编程的机制,一般都放到对应的.cpp。简短的函数可以直接放在.h,你自己找起来也方便
3.包含了.h就能直接使用对应的.C。项目中这种事情一般让编译器去实现。其实编译的时候,编译器会自动检索所有文件,只要你有声明,实现不管你写在哪,编译器都会找到的,写在对应的.h和.cpp是为了方便和规范的需要

5. c多个文件如何编译

关于整个 C 语言中的主函数 main( ) 如何调用相关的头文件(*.h)、以及调用其它独立的模块(*.c)的方法,关键在于对于如何编写 makefile 文件的真正理解、以及真正掌握编写规则。
由于我已经有很多年没有编写过 C 语言源程序、以及编写 makefile 文件了,但是可以大概给你提供一个思路就是:

下面的文本文件假设以 my_makefile 为例,编译环境为 Linux 系统,C 语言编译器为 gcc。
但是在这里注意一点:我的 my_makefile 文件中的注释语句是否是分号进行注释,我已经不太记得了,这个需要自己再参考一下。

另外就是:对源文件(*.c)、以及生成可执行文件(my_runfile)在 my_makefile 文件中的前后次序,我也记不清了,仅供参考。
myprog1.o: myprog1.c ; myprog1.o 的生成依赖于 myprog1.c 这个源程序
gcc -c myprog1.c ; 使用 Linux 系统的 C 语言编译器对 myprog1.c 只编译、不链接
myprog2.o: myprog2.c ; myprog2.o 的生成依赖于 myprog2.c 这个源程序
gcc -c myprog2.c ;使用 Linux 系统的 C 语言编译器对 myprog2.c 只编译、不链接
my_runfile: myprog1.o myprog2.o ; 可执行文件 my_runfile 的生成依赖于 myprog1.o、myprog2.o 这两个目标文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 选项生成用户自定义的可执行文件:my_runfile,如果不指定 -o 选项,cc 编译器生成的缺省可执行文件名为:a.out
运行命令为:
$make -f my_makefile (使用 -f 选项代替缺省的 make 文件名 makefile)

6. C语言多文件编译

软件把 新建的c文件加入工程后默认被当做cpp文件进行编译了,

设置 【工程】菜单 ---> 【工程属性】--->【文件】

选中a.c 把当前文件作为C++编译勾掉 【确定】

建议 【运行】 --->【清除】 先清除后之前编译生成的文件

再接着【运行】--->【全部重新编译】 再 运行 设置参考图片如下所示

扩展知识 c++ c混合编译 extern "C"

比如吧a.c改成, 不改设置也能过编译

extern "C"

{

#include "a.h"

Status Test(int a, int b)

{

if(a==b)

return TRUE;

else

return FALSE;

}

}

7. 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不用修改

8. C语言多文件编程

多个c文件的作用在于将不同功能的代码分开来实现,这样便于代码重用、代码编译和代码管理。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。

多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。

如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。

函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。

9. 求一个c语言多源文件编程实例

------------------------ test.h
#ifndef __TEST_H__
#define __TEST_H__

#define T_DEFINE_TOTAL 100

void printmsg(char *msg);
#end if

---------------------------- test.c
#include "test.h"
void printmsg (char *msg) {
printf("%s\n", msg);
}

------------------------------ m.c
#include "test.h"

int main(int argc, char* argv[]) {
printf("The Pre define Number is %d\n", T_DEFINE_TOTAL);
printmsg("This message come from main function!");
return 0;
}

编译命令
gcc -c test.c
gcc -c m.c

gcc -o m.exe test.o m.o

10. c语言编程为什么要多文件呢

源代码确实是多文件的。不过编译好的目标代码在运行期调入内存后就无所谓文件的概念了,然而不同代码段之间的界限仍然存在。
模块化主要有以下几个优点:
1.便于复用代码。通用性强的重复的功能只要写一遍就可以了,下次要用在其它程序上时只要更改很小的部分或者可以不用更改。
2.便于多人协作。在设计软件之初就可以很清楚地分配各个开发部门的任务。模块的编写者本身只要关注他所写的东西,清楚这一部分的功能,留出接口就可以了。另外,对于整个工程的负责人而言,这样会方便浏览全局的工作进度,统筹人员安排。
3.便于修改和维护。如果能确定只是某个模块有问题,在模块内解决即可,不需要牵一发而动全身。要升级某一部分的功能,可以只针对具体的模块重新开发,节约成本。
其实不只是C语言,许多其它语言也经常使用这种方法。开发大型软件时这种方法非常有效(否则不明显,或者反而有副作用)。对于软件设计来说这不仅仅是一种风格,而是一种方法学了。
声明include包含的函数是声明外部函数,只是extern关键字可以省略。
声明后直接调用就可以了。
----
[原创回答团]

热点内容
winsock搜服务器ip 发布:2025-01-18 03:49:32 浏览:393
安卓手机蓝牙默认地址在哪里 发布:2025-01-18 03:47:57 浏览:906
shell脚本文件路径 发布:2025-01-18 03:40:31 浏览:483
sql语句执行错误 发布:2025-01-18 03:21:49 浏览:651
数据库双引号 发布:2025-01-18 03:10:20 浏览:79
学java和php 发布:2025-01-18 03:01:03 浏览:452
怎么开服务器的端口 发布:2025-01-18 02:54:23 浏览:648
别克君越编程 发布:2025-01-18 02:32:24 浏览:914
ftp游戏下载网站 发布:2025-01-18 02:09:04 浏览:628
python调用另一个文件中的函数 发布:2025-01-18 02:03:54 浏览:597