
C程序采用模块化的编程思想,需合理地将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求,在模块的划分上主要依据功能。模块由头文件和实现文件组成,对头文件和实现文件的正确使用方法是:
规则1 头文件(h)中是对于该模块接口的声明,接口包括该模块提供给其它模块调用的外部函数及外部全局变量,对这些变量和函数都需在h中文件中冠以extern关键字声明;
规则2 模块内的函数和全局变量需在c文件开头冠以static关键字声明;
规则3 永远不要在h文件中定义变量;
/模块1头文件:module1h/
extern int a; / 在模块1的h文件中声明int a /
/模块1实现文件:module1 c/
#include “module1h” / 在模块1中包含模块1的h文件 /
int a = 5; / 在模块1的c文件中定义int a /
/模块2 实现文件: module2 c/
#include “module1h” / 在模块2中包含模块1的h文件 /
/模块3 实现文件: module3 c/
#include “module1h” / 在模块3中包含模块1的h文件 /
规则4 如果要用其它模块定义的变量和函数,直接包含其头文件即可。
一、 参数传递的基本规则(ATPCS(ARM—Thumb Procedure Call Standard))
1、 参数传递
二、汇编程序、C程序相互调用举例
1、 C程序调用汇编程序
汇编程序的设计要遵守ATPCS(ARM—Thumb Procedure Call Standard),保证程序调用时参数的正确传递。在汇编程序中使用EXPORT 伪 *** 作声明本程序,使得本程序可以被别的程序调用。在C程序使用extern声明该汇编程序。
下面是一个C程序调用汇编程序的例子。其中汇编程序strcopy实现字符串复制功能,C程序调用strcopy完成字符串复制的工作。
//C程序
#include <stdioh>
extern void strcopy(char d, const char s);
int main( )
{
const char srcstr=”First string-source”;
char dststr[ ]=”Second string-destination”;
printf(“Before copying:\n”);
printf(“%s\n %s\n”, srcstr,dststr);
strcopy(dststr,srcstr);
printf(“After copying:\n”);
printf(“%s\n %s\n “,srcstr,dststr);
while(1) ;
}
;汇编程序
AREA Scopy, CODE, READONLY
EXPORT strcopy
Strcopy
LDRB R2, [R1], #1
STRB R2, [R0], #1
CMPR2,#0
BNE Strcopy
MOV PC, LR
END
2、 汇编程序调用C程序
汇编程序的设计要遵守ATPCS,保证程序调用时参数的正确传递。在汇编程序中使用IMPORT伪 *** 作声明将要调用的C程序。下面是一个汇编程序调用C程序的例子。其中在汇编程序中设置好各参数的值。本例中有6个参数,分别使用寄存器R0存放第1个参数,
R1存放第2个参数, R2存放第3个参数, R3存放第4个参数, 第5个、第6个参数利用数据栈传送。由于利用数据栈传递参数,在程序调用结束后要调整数据栈指针。
//C程序g( )返回6个参数的和
int g( int a, int b, int c, int d, int e, int f )
{
printf(“e=%d\n”, e);
printf(“f=%d\n”, f);
return (a+b+c+d+e+f);
}
; 汇编程序调用C程序 g( ) 计算6个整数 i, 2i, 3i, 4i, 5i, 6i的和
EXPORT f
AREA f ,CODE, READONLY
IMPORT g
MOV R0, #1
ADD R1, R0, R0
ADD R2, R1, R0
ADD R3, R2, R0
ADD R4, R3, R0
ADD R5, R4, R0
STR R4, [SP, #-4]!
STR R5, [SP, #-4]!
BL g
ADD SP, SP, #4
ADD SP, SP, #4
STOP B STOP
END
有网友反映电脑每次开机都会d出提示模块“xxxdll”已加载,但找不到入口点DLLRegisterServer。重启之后还是这样,这是什么问题呢又该怎么解决呢下面就由我跟大家分享具体的处理方法吧,希望对大家有所帮助~
Win7笔记本提示模块xxxdll已加载但找不到接入口处理方法
1、先介绍注册方法,以mfc42dll文件为例,先从开始菜单中打开“运行”程序。
2、在运行对话框中输入regsvr32 mfc42dll命令, 确定,就可对mfc42dll文件进行注册。成功注册。
3、但是,有的时候注册链接库文件时,会d出如下提示“模块已"xxxdll"加载,但找不到入口点DLLRegisterServer”。
4、遇到这们的情况,先要弄清楚,只是这一个mfc42dll文件无法注册,还是所有的dll文件都无法注册。可以把mfc42dll换成其它dll文件,注册试试(注册方法,这种dll文件,可以到C:\windwos\system32\文件夹中去找一个试试,若是64位系统,则到C:\windwos\SysWOW64\文件夹找)。
5、如果只是mfc42dll这个文件不行,可到网上下载这个文件,放到上面的路径文件夹中,覆盖掉旧的,再注册一下。
6、如果是所的的dll文件都无法注册,则是系统有问题,可以用管理员身份进行注册,方法,从开始菜单中打开“命令提示符”,要以管理员身份打开。
7、进入以管理员身份的命令提示符窗口后,输入regsvr32 xxxdll注册命令,回车,即可注册。
8、如果提示“DLLRegisterServer 在 xxxdll 已成功”,则表明成功注册。
9、如果以管理员身份仍不能注册,可以下载修复工具对系统进行修复,到网上百度一下“DirectX修复工具”,用这个软件修复。
相关阅读:笔记本电脑常见故障分析
Ⅰ笔记本电脑风扇间歇启动的原因
笔记本电脑在不运行任何程序的情况下,系统风扇会间歇性地转动,大概转5秒,然后停10秒,然后再转5秒,周而复始。
其实这个现象是正常的,因为笔记本电脑为了节省电力消耗,它的散热风扇并不是一直工作的,而是当笔记本电脑内部的温度达到一定程度后,才会启动散热,所以也就造成了时转时停的现象。
Ⅱ笔记本电脑为何启动缓慢
我的笔记本最近出现了很奇怪的故障,表现为:开机后硬盘灯闪烁,5到6分钟才能进入系统,进入系统后系统响应迟钝,查看进程有名为SYSTEM(不是SYSTEM Idel Process)进程占用资源99%资源,
大小为268KB~272KB,CPU风扇开启(此机为温控风扇,平时打CS半个小时才启动),过15分钟左右才交回资源SYSTEM Idel Process,系统恢复正常。最新版金山毒霸查不到毒,无其他可疑进程,天网监视
也没可疑连接。我的机器是中了病毒还是木马呢或是系统故障根据你所说的情况,应该是属于系统故障,很可能是有某种未知的病毒程序在影响你的系统。最理想的解决方法是先备份重要数据,然后
格式化系统所在分区,重新安装 *** 作系统,这样应该能让你的电脑恢复正常了。另外,一般笔记本电脑随机都会自带系统恢复盘,但是使用恢复盘会将系统恢复到出厂状态,可能会造成数据丢失,所以
请谨慎使用。
Ⅲ笔记本电脑的散热问题
在电脑中,CPU是发热大户,CPU速度越快,功耗越大,发热量就越多。一般所采用的散热方法主要是依靠散热板和风扇。主板的底部和上部,各有一块金属散热板。在CPU的位置,有协助散热的系统
,吸收来自CPU产生的热量。散热风扇则有不启动、低风量和高风量三个档,视CPU温度而定。这种散热方法最大的好处是成本低,故被大多数PC生产厂家所接受。
除了这种常用的散热方法外,键盘对流散热也是一个很有创意的方法。我们知道,笔记本电脑很薄,当把键盘装到主机板上时,键盘底部就会和主板接触,正好可以利用键盘底部将CPU产生的热量传
导出去。在键盘的构造上,每个按键都有4个孔,热量于是经由按键孔排出,当热空气从按键孔排出时,冷空气就从按键孔流入,以取代热空气。在众多的散热技术中,水冷散热管技术是IBM提出的一种很有效的散热技术。最初的创意是来自于挖冰淇淋的勺子,把手的热量通过空管导向冰冻的冰淇淋,融化的较为松软后就可以挖出食用。散热
管内有纤维和液态导热介质(大部分为水分),管内抽成真空后,一段贴近CPU,另一端远离CPU。它的工作原理是:真空状态下,液态导热介质的沸点很低,如果管子的一段被加热,介质就会蒸发,将热
带到另一端,冷却后再流回去,如此反复,热量就不断被带走了。散热管的优点很多,没有移动式的零件,就没有噪音,不消耗电能,同时可以长时间有效地工作。
除了IBM的散热管技术外,比较有特色的还有东芝笔记本电脑的冷、热板散热技术。散热效率提高了大约65倍,使笔记本电脑散热问题得到有效解决。目前很多名牌笔记本电脑都采用了散热管散热
、键盘对流散热、温控风扇三级散热方式。
现在尚没有软件能直接控制笔记本电脑风扇的运行,但通过HTL指令可有效降低CPU的发热量。Windows2000/XP已内置了对HTL指令的支持。
Ⅳ笔记本光驱故障
笔记本光驱最常见的故障是机械故障,其次才是电路方面故障,而且电路故障中由用户调整不当引起的故障要比元器件损坏的故障多得多,所以在拆解或维护光驱设备时不要随便调整笔记本光驱内
部各种电位器。笔记本光驱常见故障主要有三类: *** 作故障、偶然性故障和必然性故障。
1 *** 作故障例如驱动出错或安装不正确造成在Windows或DOS中找不到笔记本光驱;笔记本光驱连接线或跳线错误使笔记本光驱不能使用;CD线没连接好无法听CD;笔记本光驱未正确放置在拖盘上造成光
驱不读盘;光盘变形或脏污造成画面不清晰或停顿或马赛克现象严重;拆卸不当造成光驱内部各种连线断裂或松脱而引起故障等。
2偶然性故障笔记本光驱随机发生的故障,如机内集成电路,电容,电阻,晶体管等元器件早期失效或突然性损坏,或一些运动频繁的机械零部件突然损坏,这类故障虽不多见,但必须经过维修及
更换才能将故障排除,所以偶然性故障又被称为“真”故障。
3必然性故障笔记本光驱在使用一段时间后必然发生的故障,主要有:激光二极管老化,读碟时间变长甚至不能读碟;激光头组件中光学镜头脏污或性能变差等,造成音频或视频失真或死机;机械传
动机构因磨损、变形、松脱而引起故障。
需要说明的是必然性故障的维修率不仅取决于产品的质量,而且还取决于用户的人为 *** 作和保养及使用频率与环境。
以上就是关于C++什么是模块全部的内容,包括:C++什么是模块、汇编语言是怎么调用c语言的程序的、提示模块xxx.dll已加载但找不到接入口怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)