文档库 最新最全的文档下载
当前位置:文档库 › extern与头文件(h)的区别和联系

extern与头文件(h)的区别和联系

extern与头文件(h)的区别和联系
extern与头文件(h)的区别和联系

用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字?

如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??

这个问题一直也是似是而非的困扰着我许久,经过实践和查找资料,有如下总结:

一、头文件

首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include 的地方展开一下,没别的意义了,其实头文件主要是给别人看的。

我做过一个实验,将头文件的后缀改成xxx.txt,然后在引用该头文件的地方用

#include"xxx.txt"

编译,链接都很顺利的过去了,由此可知,头文件仅仅为阅读代码作用,没其他的作用了!

不管是C还是C++,你把你的函数,变量或者结构体,类啥的放在你的.c或者.cpp文件里。然后编译成lib,dll,obj,.o等等,然后别人用的时候,最基本的gcc hisfile.cpp yourfile.o|obj|dll|lib 等等。

但对于我们程序员而言,他们怎么知道你的lib,dll...里面到底有什么东西?要看你的头文件。你的头文件就是对用户的说明。函数,参数,各种各样的接口的说明。

那既然是说明,那么头文件里面放的自然就是关于函数,变量,类的“声明”(对函数来说,也叫函数原型)了。记着,是“声明”,不是“定义”。

那么,我假设大家知道声明和定义的区别。所以,最好不要傻嘻嘻的在头文件里定义什么东西。比如全局变量:

/*xx头文件*/

#ifndef _XX_头文件.H

#define _XX_头文件.H

int A;

#endif

那么,很糟糕的是,这里的int A是个全局变量的定义,所以如果这个头文件被多次引用的话,你的A会被重复定义,显然语法上错了。只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次,不过也许还是不会出岔子,但若多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本c源文件,所以在这多个c文件编译时是不会出错的,但在链接时就会报错,说你多处定义了同一个变量,

Linking...

incl2.obj : error LNK2005: "int glb" (?glb@@3HA) already defined in incl1.obj

Debug/incl.exe : fatal error LNK1169: one or more multiply defined symbols found

注意!!!

二、extern

这个关键字真的比较可恶,在定义变量的时候,这个extern居然可以被省略(定义时,默认均省略);在声明变量的时候,这个extern必须添加在变量前,所以有时会让你搞不清楚到底是声明还是定义。或者说,变量前有extern不一定就是声明,而变量前无extern就只能是定义。注:定义要为变量分配内存空间;而声明不需要为变量分配内存空间。

下面分变量和函数两类来说:

(1)变量

尤其是对于变量来说。

extern int a;//声明一个全局变量a

int a; //定义一个全局变量a

extern int a =0 ;//定义一个全局变量a 并给初值。

int a =0;//定义一个全局变量a,并给初值,

第四个等于第三个,都是定义一个可以被外部使用的全局变量,并给初值。

糊涂了吧,他们看上去可真像。但是定义只能出现在一处。也就是说,不管是int a;还是extern int a=0;还是int a=0;都只能出现一次,而那个extern int a可以出现很多次。

当你要引用一个全局变量的时候,你就必须要声明,extern int a; 这时候extern不能省略,因为省略了,就变成int a;这是一个定义,不是声明。注:extern int a; 中类型int可省略,即extern a; 但其他类型则不能省略。

(2)函数

函数,对于函数也一样,也是定义和声明,定义的时候用extern,说明这个函数是可以被外部引用的,声明的时候用extern说明这是一个声明。但由于函数的定义和声明是有区别的,定义函数要有函数体,声明函数没有函数体(还有以分号结尾),所以函数定义和声明时都可以将extern省略掉,反正其他文件也是知道这个函数是在其他地方定义的,所以不加extern也行。两者如此不同,所以省略了extern也不会有问题。

比如:

/*某cpp文件*/

int fun(void)

{

return 0;

}

很好,我们定义了一个全局函数

/*另一cpp文件*/

int fun(void);

我们对它做了个声明,然后后面就可以用了

加不加extern都一样

我们也可以把对fun的声明放在一个头文件里,最后变成这样

/*fun.h*/

int fun(void); //函数声明,所以省略了extern,完整些是extern int fun(void);

/*对应的fun.cpp文件*/

int fun(void)

{

return 0;

}//一个完整的全局函数定义,因为有函数体,extern同样被省略了。

然后,一个客户,一个要使用你的fun的客户,把这个头文件包含进去,ok,一个全局的声明。没有问题。

但是,对应的,如果是这个客户要使用全局变量,那么要extern 某某变量;不然就成了定义了。

总结:

对变量而言,如果你想在本源文件(例如文件名A)中使用另一个源文件(例如文件名B)的变量,方法有2种:(1)在A文件中必须用extern声明在B文件中定义的变量(当然是全局变量);(2)在A文件中添加B文件对应的头文件,当然这个头文件包含B文件中的变量声明,也即在这个头文件中必须用extern声明该变量,否则,该变量又被定义一次。

对函数而言,如果你想在本源文件(例如文件名A)中使用另一个源文件(例如文件名B)的函数,方法有2种:(1)在A文件中用extern声明在B文件中定义的函数(其实,也可省略extern,只需在A文件中出现B文件定义函数原型即可);(2)在A文件中添加B文件对应的头文件,当然这个头文件包含B文件中的函数原型,在头文件中函数可以不用加extern。

******************************************************************************* ***********************************************************************

对上述总结换一种说法:

(a)对于一个文件中调用另一个文件的全局变量,因为全局变量一般定义在原文件.c中,我们不能用#include包含源文件而只能包含头文件,所以常用的方法是用extern int a来声明外部变量。另外一种方法是可以是在a.c文件中定义了全局变量int global_num ,可以在对应的a.h头文件中写extern int global_num ,这样其他源文件可以通过include a.h来声明她是外部变量就可以了。

(b)还有变量和函数的不同举例

int fun(); 和 extern int fun(); 都是声明(定义要有实现体)。用extern int fun()只是更明确指明是声明而已。

而 int a; 是定义

extern int a; 是声明。

(3)此外,extern修饰符可用于C++程序中调用c函数的规范问题。

比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C 程序编译完成后在目标代码中命名规则不同。

C++语言在编译的时候为了解决的多态问题,会将名和参数联合起来生成一个中间的名称,而c语言则不会,因此会造成链接时找不到对应的情况,此时C就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间名。

三、extern和头文件的联系

这种联系也解决了最初提出的2个问题:

(a)用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字?

(b)如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??

答案:如果一个文件(假设文件名A)要大量引用另一个文件(假设文件名B)中定义的变量或函数,则使用头文件效率更高,程序结构也更规范。其他文件(例如文件名C、D等)要引用文件名B中定义的变量或函数,则只需用#include包含文件B对应的头文件(当然,这个头文件只有对变量或函数的声明,绝不能有定义)即可。

******************************************************************************* *************************************************************

那是一个被遗忘的年代,那时,编译器只认识.c(或.cpp)文件,而不知道.h是何物的年代。

那时的人们写了很多的.c(或.cpp)文件,渐渐地,人们发现在很多.c(或.cpp)文件中的声明变量或函数原型是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(或.cpp)文件。但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(或.cpp)文件,并修改其中的声明,啊~,简直是世界末日降临!

终于,有人(或许是一些人)再不能忍受这样的折磨,他(们)将重复的部分提取出来,放在一个新文件里,然后在需要的.c(或.cpp)文件中敲入#include XXXX这样的语句。这样即使某个声明发生了变更,也再不需要到处寻找与修改了---世界还是那么美好!

因为这个新文件,经常被放在.c(或.cpp)文件的头部,所以就给它起名叫做“头文件”,扩展名是.h.

从此,编译器(其实是其中预处理器)就知道世上除了.c(或.cpp)文件,还有个.h的文件,以及一个叫做#include命令。

F2812外部接口XINTF资料

F2812外部接口XINTF 什么是外部接口,外部接口有什么作用,怎么去配置和使用这一块。今天了解了这部分的知识,现将其详细的记录下来。先看一下什么是外部接口。外部接口是F2812与外部设备进行通信的重要接口,这些外部接口对应着CPU内部的某个存储空间,CPU通过对存储空间进行的读写操作间接控制外部接口。书本上抄下来的定义,很是官方啊,不好懂。再来看一下接的是一些什么,估计是不是会好理解一些呢?一般用于RAM,FLASH等。哦...估计是内部数据或者是程序存不下了,找一个外面的片子来做存储区扩展用的接口。 外部接口有哪一些线呢?有片选信号线、数据总线、地址总线、读写使能信号线、以及其他信号线。 F2812中外部接口被映射到5个固定的存储空间区域,每个区域都有一个片选信号。当系统使能片选信号后,数据自动存储到对应的存储空间内。嘻嘻!就喜欢这一句自动存储。 所有的数字芯片不能少的一条主线就是时钟,这个模块的时钟怎样呢?答:XINTF模块的时序都是参照F2812的内部时钟XTIMCLK。大小可以人为设定为系统时钟或系统时钟的一半。 F2812中XINTF的使用

想使用XINTF先要弄清楚里面有些什么,外面有些什么引 脚需要接线。 XINTF一共有5个空间,分别是Zone0、Zone1、Zone2、Zone6、Zone7,每个空间有相应的片选信号线连接到外面。其中1、2共用一根片选线,6、7共用一根片选线;2、6共用相同的外 部地址,外部首地址0x0 0000、尾地址0x7 ffff;1、2占用的 外部总线地址不同,0的为0x2000~0x3fff、1的为0x4000~0x5fff;空间7可以作为外部启动的存储空间,由于这个空间的特殊性,所以暂时不打算用,也就不放在这里讨论了。 观察了一下开发板,CPLD的接线为8根数据线,五根地址线,空间0、1共用的片选线,还有R/W读写信号线,WE写使能信号线,RD读使能信号线。 对XINTF空间的操作分为以下三个部分,引导、激活、跟踪。 引导:访问区域的片选信号为低,相应地址放在外设总线上,引导部分的周期通过XTIMCLK来配置时序。 激活:访问外部设备,由于我只进行读操作,所以将读使能信号线拉低,外部接口的数据被锁存到DSP中。暂不打算使 用XREADY信号采样。 跟踪:跟踪周期是指读写信号置成高电平之后片选信号仍然保持低电平一段时间。

page的用法总结大全

page的用法总结大全 page这个单词你知道是什么意思吗?page的用法是怎样的呢,快来了解一下吧,今天小编给大家带来了page的用法 ,希望能够帮助到大家,一起来学习吧。 page的意思 n. 页,(计算机的)页面,年史, vt. 标记…的页数,翻页,喊出名字以寻找,(在公共传呼系统上)呼叫 vi. 翻书页,浏览 变形:过去式: paged; 现在分词:paging; page用法 page可以用作名词 page的基本意思是“页”,指书刊、杂志等的一页或报纸等的一版,也可指纸的一张,还可指报纸的“专页”。 page也可指可写入书中的历史事件或时期。 page用作动词的意思是“标记…的页数”或“翻页”。 page用作名词的用法例句 There are several faults in the page of figures.那一页的数字中有几个差错。 Open your German readers at page 28.把德语课本翻到第28页。 The page number is shown at the foot of the page.在页脚处可以看到页码。 page可以用作动词 page用作动词的意思是“标记…的页数”或“翻页”。 page也可作“呼叫…”解,指在公共场所通过扩音器呼喊找人。 page是及物动词,接名词或代词作宾语。 page用作动词的用法例句 When the book is ready for printing,someone has to page it up.书在付印前,必须有人排好页码。 He tore the sheet in his hurry to turn over the page.他匆忙翻页的时候,把杂志都撕坏了。 Absorbed, she licked her index finger absently each time she turned a page.她读得出神,每次翻页就不自觉地舔一下食指。

suggest用法

suggest [原句] Tom, can you suggest any good books for my project? (P12) [点拨] suggest作及物动词,在这里表示“建议;提议”。其常用搭配有: a. suggest sth Let me suggest this one. It’s an excellent watch, it looks good, and it only costs $50. 让我向您建议这个。这是一块非常好的手表,看起来美观,而且只卖五十美元。 They were wondering where to hold the party and I suggested the Italian restaurant near the station. 他们不知道到哪里举行宴会,我提议了车站附近的意大利餐馆。 I’d suggest a visit to the Summer Palace. 我建议去颐和园参观。 b. suggest doing sth I suggestgoing to the park on Sunday. 我建议周日去公园。 My husband suggested eating out tonight to celebrate my birthday. 我丈夫建议今晚出去吃饭给我庆生。 c. suggest (that) sb (should) do sth I suggest that we wait a while before we make any decision. 我建议在做任何决定之前先等一会儿。 I suggest you give her a ring before you call on her. 我建议你拜访她之前先给她打个电话。 [拓展] (1) suggest可以表示“暗示;意味着”。如: His smile suggested that he was very happy. 他的微笑暗示了他非常高兴。 Are you suggesting that I look fat in these trousers? 你是在暗示我穿这条裤子显胖吗? His behaviour suggested a lack of interest in what we were doing. 他的举止意味着他对我们正在做的事缺乏兴趣。 (2) suggestion是其名词形式,意为“建议;提议”,常用于make a suggestion结构。如:She made some very helpful suggestions but her boss rejected them all. 她提出了几个非常有用的建议,但是她的老板把它们全给否决了。 [即学即练]补全句子。 (1) 我建议我们把这些学生分成四组。 I suggest that _____________________. (2)我不知道今天晚上穿什么。你有什么建议吗? I don’t know what to wear tonight. Have you got_____________? (3)他面色苍白,说明他身体不好。 His pale face ____________________. (4) 你能推荐个人做这份工作吗? Can you ________________ for this job?

TMS320F28335外部中断总结

TMS320F28335外部中断总结 作者:Free 文章来源:Free 点击数:93 更新时间:2010-8-26 在这里我们要十分清楚DSP的中断系统。C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13 和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE 通过12根线与28335核的12个中断线相连。而PIE的另外 一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控 制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需 要再由PIEIER确定)。接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想 象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同 样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制12组的中断,PIE的所有中断寄存器控制每组内8个的中断。 除此之外,我们用到哪一个外部中断,相应的还有外部中断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而PIE和CPU的 中断标志寄存器由硬件来清零。 EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.XINT2 = &ISRExint; //告诉中断入口地址 EDIS; // This is needed to disable write to EALLOW protected registers PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIE PieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第一组中的中断5 IER |= M_INT1; // Enable CPU 第一组中断

网络分析仪使用方法总结

如何使用网络分析仪 德力网络分析仪NA7682A NA7682A矢量网络分析仪吸取了前几代和国内外各款网络分析仪使用的经验,结合了最新国际仪器发展的技术和态势,是Deviser德力仪器最新推出的第四代矢量网络分析仪,作为国内主流的网络分析仪,下面介绍网络分析仪的使用技巧如下。 频率范围从100kHz到8.5GHz频段,为无线通信、广播电视、汽车电子、半导体和医疗器件等行业射频器件、组件的研发和生产的使用提供了高效、灵活的测试手段,进入了民品、工业、科研教育和军工等领域。其主要的特点是和主流网络分析仪是德的E507X系列指标和指令上做到兼容,在客户使用的性价比上非常优秀的选择。 在射频器件、基站天线、手机天线、GPS天线等、通信系统模块分析等领域成功的测试经验使越来越多的客户开始使用这款网络分析仪,在低频、800/900M、1800/1900M、2100M、5G/5.8G等的产品频率使用领域内广泛使用。 深圳市良源通科技有限公司专业服务和销售射频和通信仪表多年,是德力仪器国内最重要的合作伙伴和一级代理商,结合自己多年的技术积累和客户使用的配合测试,得到丰富经验。在仪器的售前和售后服务上面具有自己的优势。提供大量仪器试用和使用方案的设计,给客户在设备开发、产品研制和批量生产上都提供方便和最有优势的选择。 产品特点: 1、12.1英寸1280*800 TFT触摸屏 2、频率覆盖范围: 100 kHz 至 8.5 GHz 3、阻抗:50Ω 4、动态范围: >125 dB (比E5071C宽7-12dB) 5、极低的迹线噪声: <0.005 dBrms (在 3 kHz IFBW) 6、快速的测量速度: 80usec/点 7、分析和误差修正和校准功能 8、通过USB、LAN 和 GPIB 接口进行系统互联 9、时域分析(选件):时域传输、反射特性分析;距离上的故障定位。 10、数据变换:涉及多种形式的阻抗、导纳变换。 11、滤波器分析:自动分析出:插损、3dB带宽、6dB带宽、带内纹波、带外抑制、Q值、矩形系数

动名词的用法详解

动名词的用法详解 今天给大家带来动名词的用法详解,我们一起来学习吧,下面就和大家分享,来欣赏一下吧。 英语语法:动名词的用法详解 动名词因同时拥有动词和名词两者的特点而拥有及其丰富 的用法,熟练的掌握这些用法不仅可以使口语表达更地道生动,也能在写作中增分添彩。 动名词主要有四种用法,做主语,作宾语,作表语,作定语,每种用法下又分小类别,是一个非常复杂庞大的系统,学习者们往往会理不清脉络,今天就为大家带来动名词的用法讲解。 一.作主语 1.直接位于句首 eg.Swimming is a good sport in summer. 2.用it作形式主语,把动名词(真实主语)置于句尾作后置主语。 eg.It is no use telling him not to worry.

.mportant,essential,necessary等形容词不能用于上述结构。 3.用于“There be”结构中 eg.There is no saying when hell come. 4.动名词的复合结构作主语: 当动名词有自己的逻辑主语时,常可以在前面加上一个名词或代词的所有格,构成动名词的复合结构,动名词疑问句通常使用这种结构做主语 eg.Their coming to help was a great encouragement to us. Does your saying that mean anything to him? 二.作宾语 1.作动词的宾语 某些动词后出现非限定性动词时只能用动名词作宾语,不能用不定式。不定式通常指某种特定的动作,但动名词表示泛指,常见的此类动词有: admit,appreciate,excuse,stand,advise,allow,permit,avoid,consider,e njoy,finish,give up,cannot help,imagine,include,keep,understand,keepon,mind,report,risk,mis s,put off,delay,practise,resist,suggest,depend on,think about,set about,succeed in,worry about,burst out,insist on,feel like,be used

suggest用法归纳

关于suggest用法及常见错点的归纳 陕西延川中学:刘富祥 【摘要】:动词suggest有两层含义,可表示“建议,提议”或“暗示,表明”。后接名词、动名词、含疑问词的不定式或从句。作“提议,建议”讲时,宾语从句要用虚拟语气。但不能接不定式或复合宾语。下面分述如下: 一、它的用法。二、常见的错误。 【关键词】:不定式动名词复合宾语虚拟语气用法宾语从句建议提议错点 (一)动词suggest有如下一些用法: 一、有“建议”的意思。advise、propose也有此意,请比较它们用法的异同: (1)都可接名词做宾语 She suggested/advised/proposed an early start.她建议早一点出发。 We suggested/advised/proposed a visit to the museum the next day. 我们建议明天去参观博物馆。 (2)都可接动名词做宾语 I suggested/advised/proposed putting off the sports meets. 我建议将运动会延期。 They suggested/advised/proposed waiting until the proper time. 他们建议(我们)等到恰当的时机才行动。 (3)都可接that宾语从句,that从句用should+动词原形,should可以省略。 She suggested/advised/proposed that the class meeting (should)not be held on Saturday.她建议班会不要在星期六举行。 We suggested/advised/proposed that he (should) go and make an apology to his teacher.我们建议他去向老师道歉。 (4)advise可接动词不定式复合宾语,propose可接不定式做宾语。 I advised him to give up the foolish idea.=I suggested/proposed his/him giving up the foolish idea.我建议他放弃那愚蠢的念头。(suggest和propose在口语里可接动

Seated的用法小结

Seated的用法小结 seated是一个比较特别的过去分词,说它特殊一是因为它的词性尚有不确定性——它有时是过去分词,有时又具有形容词的性质,像是一个形容词;二是因为这样一个很少引人注意的过去分词,在近几年的高考英语考题中经常“露脸”,一下子变成了一个热点词汇。下面我们先来看几道高考题: 1. Please remain __________ until the plane has come to a complete stop. (山东卷) A. to seat B. to be seated C. seating D. seated 2. Please remain __________; the winner of the prize will be announced soon. (辽宁卷) A. seating B. seated C. to seat D. to be seated 3. Can those _________ at the back of the classroom hear me? (福建卷) A. seat B. sit C. seated D. sat 对于seated的用法,首先要从动词seat说起。 同学们可能只知道seat的名词用法,即只知道它表示“座位”。 其实,seat还可用作动词,且是一个典型的及物动词,其意为“给某人座位”“让人坐”或“能容纳……”句式:sb be seated 或seat sb / oneself 。 如: Seat the boy next to his brother. 让那个孩子坐在他哥哥旁边。 We can seat 300 in the auditorium. 我们这个礼堂可容纳300人。

英语单词惯用法集锦解析

英语单词惯用法集锦 习惯接动词不定式的动词(V to inf) adore(vi极喜欢) dread (vt.不愿做,厌恶)plan 计划 afford(+to,vt有条件,能承担)endeavour (vt,竭力做到,试图或力图)prefer(vt.宁可;宁愿(选择);更喜欢)agree 同意endure(忍受.cannot ~ to) prepare准备 aim (vi[口语]打算:) engage (vi.保证,担保;) presume(vt.冒昧;敢于[用于第一人称时为客套话]:) appear (vi.似乎;显得) essay(vt.尝试,试图) pretend(vt.自命;自称;敢于;妄为) apply (申请)expect(期望,希望)proceed(开始,着手,)arrange (vi.做安排,(事先)筹划)fail (vt.未做…;疏忽)promise(许诺,保证做 ask (要求)forget (vt. 忘记)purpose (vt.决心,打算) beg (vt.正式场合的礼貌用语]请(原谅),请(允许):I beg to differ.恕我不能赞同)guarantee(保证,担保)refuse(拒绝)bear 承受,忍受hate([口语]不喜欢;不愿意;)regret (vt. 抱歉;遗憾)begin help (有助于,促进)remember(记住) bother (vi.通常用于否定句]麻烦,费心)hesitate(vi.犹豫;有疑虑,不愿)scheme(策划做)care (vt.想要;希望;欲望[后接不定式,常用于否定、疑问及条件句中])hope (vt.希望,盼望,期待)seek(vt.谋求,图谋[后接不定式]) cease (停止; 不再(做某事)[正式] intend (打算;想要)seem(似乎,好像[后接不定式或从句];觉得像是,以为[ choose (意愿;选定;决定)itch start开始claim (vt. 主张;断言;宣称) continue (继续)like 喜欢swear(vt.起誓保证;立誓要做(或遵守) dare (vt.敢,敢于,勇于,胆敢)long(vi.渴望;热望;极想) decline(vt.拒绝,拒不(做、进入、考虑等) manage(设法完成某事)threaten(vt.威胁,恐吓,恫吓)deign (屈尊做)mean(有意[不用进行时)trouble(vi.费心,费神;麻烦)demand(vi.要求,请求:)need (需要)try(设法做) deserve (应得) neglect (疏忽) undertake(承诺,答应,保证) desire (希望渴望)offer(表示愿意(做某事),自愿;)venture(冒险(做某事))determine(vi.决心,决意,决定,)omit (疏忽,忘记)want 想要 die (誓死做)pine (渴望)wish (希望) 习惯接“疑问词+动词不定式”的动词(有时也包括VN wh-+to do) advise 建议explain 解释perceive 觉察,发觉 answer 答复find 得知,察觉persuade 说服,劝说;使某人相信 ask 询问,问forget 忘记phone 打电话 assure 保证guess 臆测,猜度pray 祈祷 beg 请求,恳求hear 小心聆听(法庭案件)promise 允诺 conceive 想象,设想imagine 以为,假象remember记得 consider 考虑,思考indicate 暗示remind 提醒,使想起 convince 使相信inform告知通知instruct告知,教导 see 看看,考虑,注意decide 解决,决定know 学得,得知 show 给人解释;示范;叙述;discover发现;知道learn 得知,获悉 signal以信号表示doubt 怀疑,不相信look 察看;检查;探明 strike 使想起;使突然想到;使认为suggest 提议,建议tell 显示,表明;看出,晓得;warn 警告,告诫think 想出;记忆,回忆;想出,明白wonder 纳闷,想知道 wire 打电报telegraph 打电报 习惯接动名词的动词(包括v+one’s/one+v+ing) acknowledge 认知,承认…之事实escape免除,避免omit疏忽,忽略 admit 承认,供认excuse 原谅overlook 放任,宽容,忽视adore (非正式)极为喜欢fancy 构想,幻想,想想postpone 延期,搁置 advise 劝告,建议finish完成prefer较喜欢 appreciate 为…表示感激(或感谢)forbid 不许,禁止prevent预防 avoid 逃避forget 忘记prohibit 禁止,妨碍

使用suggest的常见错点

使用suggest的常见错点 一、误用不定式作宾语 要表示汉语的“建议做某事”,英语通常用suggest doing sth,而不能用suggest to do sth。如:他建议坐飞机去,可我认为这样花费太大。 正:He suggested going by plane, but I thought it would cost too much. 误:He suggested to go by plane, but I thought it would cost too much. 汤姆建议把房子卖了,但是安表示反对。 正:Tom suggested selling the house but Ann was against it. 正:Tom suggested to sell the house but Ann was against it. 二、汉语通常说“建议某人做某事”,但英语习惯上不能说suggest sb to do sth,而说suggest sb’s [sb]doing sth。也就是说,suggest 后不仅不接不定式,而且也不接不定式的复合结构。如: 他建议我们早点动身。 正:He suggested that we leave earlier. 误:He suggested us to leave earlier.

当然,我们也可以用后接that 从句的形式来表达此意思(注意谓语用“should+动词原形”这样的虚拟语气形式)。如: I suggest that we (should) have lunch right now. 我建议我们现在就吃午饭。 He suggests that we should all go to see the film. 他建议我们都去看电影。 比较以下同义表达: 他建议他们在没有听到事实真相之前什么都别说。正:He suggested (should) not saying anything till they heard the facts. 正:He suggested saying nothing about it till they heard the facts. 正:He suggested that they shouldn’t say anything till they heard the facts. 三、混用其后宾语从句的语气 suggest 后接宾语从句时,从谓语既可用陈述语气,也可用虚拟语气,其区别与suggest所表示的意思有关: 1. 若suggest 表示“建议”,则其后接的that 从

C语言extern使用方法总结

extern使用方法总结! 作者:VIP用户提交日期:2007-5-16 20:53:00 Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。 谨记:声明可以多次,定义只能一次。 函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。 而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。 引用性声明、定义性声明 强符号、弱符号 出现在linux的gcc链接分析中,可以加深链接的理解。 全局变量或函数本质上讲没有区别,函数名是指向函数二进制块开头处的指针。而全局变量是在函数外部声明的变量。函数名也在函数外,因此函数也是全局的。 在使用中,要形成一种风格。 头文件 首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一下,没别的意义了,其实头文件主要是给别人看的。 我做过一个实验,将头文件的后缀改成xxx.txt,然后在引用该头文件的地方用 #include"xxx.txt" 编译,链接都很顺利的过去了,由此可知,头文件仅仅为阅读代码作用,没其他的作用了!

不管是C还是C++,你把你的函数,变量或者结构体,类啥的放在你的.c或者.cpp文件里。然后编译成lib,dll,obj,.o等等,然后别人用的时候最基本的gcc hisfile.cpp yourfile.o|obj|dll|lib 等等。 但对于我们程序员而言,他们怎么知道你的lib,dll...里面到底有什么东西?要看你的头文件。你的头文件就是对用户的说明。函数,参数,各种各样的接口的说明。 那既然是说明,那么头文件里面放的自然就是关于函数,变量,类的“声明”了。记着,是“声明”,不是“定义”。 那么,我假设大家知道声明和定义的区别。所以,最好不要傻嘻嘻的在头文件里定义什么东西。比如全局变量: #ifndef _XX_头文件.H #define _XX_头文件.H int A; #endif 那么,很糟糕的是,这里的int A是个全局变量的定义,所以如果这个头文件被多次引用的话,你的A会被重复定义 显然语法上错了。只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次,不过也许还是会岔子,但若多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本c源文件,所以在这多个c文件编译时是不会出错的,但在链接时就会报错,说你多处定义了同一个变量, Linking... incl2.obj : error LNK2005: "int glb" (?glb@@3HA) already defined in incl1.obj Debug/incl.exe : fatal error LNK1169: one or more multiply defined symbols found 注意!!! extern

软件使用手册总结

1测控系统简介 本测控系统专为拉力机、压力机、电子万能材料试验机而研制。适用于测定各种材料在拉伸、压缩、弯曲、剪切、撕裂、剥离、穿刺等状态下的力学性能及有关物理参数。可做拉伸、压缩、三点抗弯、四点抗弯、剪切、撕裂、剥离、成品鞋穿刺、纸箱持压、泡棉循环压缩、弹簧拉压及各种动静态循环测试。 1.1主要功能特性 1. 硬件 主控制器采用21世纪最先进的32位ARM处理器, 处理速度达到奔腾级通用计算机的水平,相比传统的8位单片机测控系统整体性能大大提高,运算速度更快,控制精度更高. 数据采集核心器件采用美国最新型超高精度24位AD,采样速率可达2000次/秒,可捕捉到力量的瞬间变化过程,全程不分档分辨力最高达500000分度。并采用独创的6点校准技术进一步提高精度,力量测量精度优于国家0.5级(最高级)标准。 位移编码器计数采用4倍频技术,使位移分辨力提高4倍,最高可达0.0005mm。 脉冲和电压两种输出控制方式,可控制具有脉冲或电压控制接口的任意伺服马达、变频马达或直流马达实现平滑无级调速,另还有上升、下降及停止等开关量信号输出可用于直接驱动外部继电器或电磁阀,可用于控制直流电机或气动、液压等动力装置。 先进的速度、位移、力量三闭环技术,可以实现精确的任意波形控制。 丰富的接口扩展能力:多达4路24位模拟量输入,3路16位模拟量输出,3路脉冲输出,3路AB相光电编码器输入,9路开关量输入,8路开关量输出,1路USB接口,1路RS232接口,1路RS485接口,4种LCD接口,1个并口微型打印机接口,1个串口微型打印机接口,1个8×4矩阵键盘接口。 所有输入输出接口均采用高速光电隔离技术,具备强大的抗干扰能力。 2. 软件 Windows标准风格,层次分明的操作方式加上详尽的帮助文档和提示使之成为目前试验机行业最简单易用的软件,您的调试和软件培训效率将显著提高。 采用多线程并行处理技术,测试过程中实时同时显示力量-位移、力量-时间、位移-时间、应力-应变等曲线,可随意切换到想看的曲线画面,并可查看用户设置等。 标准化的测试过程控制和报表输出模版,使可以定义任意多个测试标准供用户调用,范围涵盖GB、ASTM、DIN、JIS、BS…等几乎所有测试标准。灵活强大的测试方法自定义方式,具备定速速、定位移、定力量、定力量速率、定应力、定应力速率、定应变、定应变速率等各种控制模式,可实现复杂的多步嵌套循环控制.可设置自动返回、自动判断断裂、自动归零等功能。 强大的数据分析统计和曲线图形分析辅助工具,具备放大、缩小、平移、十字光标、取点等功能。多次历史测试数据可调入图形同时显示做对比分析。多达7个区间设置、40个手动取点、120个自动取点功能。具备最大值、最小值、平均值、去高低平均值、中位数、标准差、总体标准差、CPK值等多种统计功能。 完全开放的测试结果编辑方法,用户可得到任何想要的测试结果。最大力、断裂力、剥离力、拉伸强度、剪切强度、撕裂强度、最大变形、屈服力、伸长率、弹性模量、环刚度、非比例延伸率、区间最小力、区间平均力、定伸长取力、定力量取伸长等多达400多个计算结果均由计算机自动算出,供用户选择调用。 业界创新的Microsoft Word报表格式,简单易用,只要您会使用Word,就可编辑出您想要的精美报表。 权限管理系统使您可以锁定软件的任意功能模块,将软件操作分为多个权限级别,没被授权的操作人员无法触及没被授权的模块,软件操作更加安全可靠。 全数字化的校准系统,校准过程简单高效,校准数据上下位机双重保护。 功能强大的单位系统,可以适应世界上任何单位制,如力值单位有gf、kgf、N、kN、tf、lbf、ozf、tf(SI)、tf (long)、tf(short)等供选择,更可扩展任意多种单位。 更多重的保护机制:力量、行程、位移超量程保护设定,上下限位行程开关硬件保护设定。 测试数据管理简单直观高效:单次测试数据以Windows标准的文档形式存储,自由设置储存路径和文件名。避免了传统测控软件以数据库格式储存测试数据时数据库文件会越来越大而导致软件运行越来越慢的缺点。只要您的硬盘足够大,测试数据可以无限量保存。 所有操作均具有快捷键,并可连接外部手动控制盒,可外接快上、快下、中上、中下、慢上、慢下、置零、回位、测试、暂停、结束等全部常用按健. 多国语言一键切换:简体中文、繁体中文、英文,十国语言版更有日文、韩文、俄文、德语、法语、西班牙文、葡萄牙文等即将推出。 绿色软件,无需安装,直接拷贝到计算机即可使用(需先安装串口驱动),维护升级更加简单。

高考英语动名词用法详解(21页)

高考英语动名词用法详解 I.动名词 具有名词和动词的特征,可以带有自己的宾语和状语。动名词可以作主语、表语、宾语和定语。 1、作主语 表示比较抽象,或者泛指习惯性的动作,或表示说话者对所述动作有过经验或多次做过。 Swimming is my favorite sport. Collecting information is very important to business man. Reading books makes one wise. 读书使人明智。Listening, speaking, reading and writing are the important things you must do in learning a foreign language. 注:动名词做主语,有时先用it作形式主语,把动名词置于句末。这种用法以下句型中常用。

It’s no use / no good / useless / not any use /not any good + (sb’s) doing… It’s no use watching too much TV. It’s no good talking to him. It’s no use crying over spilt milk.(覆水难收) It is a waste of time + doing … It's a waste of time trying to talk to her when she is in a bad mood. It is fun + doing … It is fun playing with children. 和孩子们一起玩真好 2、作表语 仅限于表示工作、任务等抽象名词表示主语的内涵。 Her job is teaching. What I hate most is being laughed at. Teaching is learning. 教学相长。 3、作宾语 表示一般的、抽象的、经常性的行为。 I couldn’t risk missing that train. They went on walking and never stopped talking. 他们继续走,

动词suggest 的用法

动词suggest的用法: 一、有"建议"的意思.advise,propose 也有此义,请比较它们用法的异同: 1) 都可接名词作宾语 She suggested / advised / proposed an early start. 她建议早一点出发. We suggested / advised / proposed a visit to the museum the next day. 我们建议明天去参观博物馆. 2) 都可接动名词作宾语 I suggested / advised / proposed putting off the sports meet. 我建议将运动会延期. They suggested / advised / proposed waiting until the proper time. 他们建议(我们)等到恰当的时机才行动. 3) 都可接that 宾语从句,that从句用should+动词原形,should可以省略. She suggested / advised / proposed that the class meeting (should) not be held on Saturday. 她建议班会不要在星期六举行. We suggested / advised / proposed that he (should) go and make an apology to his teacher. 我们建议他去向老师道歉. 4) advise 可接动词不定式复合宾语,propose 可接不定式作宾语. I advised him to give up the foolish idea. = I suggested / proposed his / him giving up the foolish idea. 我建议他放弃那愚蠢的念头.(suggest和propose在口语里可接动名词的复合宾语). We proposed to start early. = We proposed starting early. 我们建议早一点出发.(接不定式不用suggest和advise) 二、有"提出"的意思.如: He suggested a different plan to his boss. 他向老板提出了一个不同的计划. Xiao Wang suggested a way to solve the problem. 小王提出了一个解决这个问题的办法. 三、有"暗示、表明"的意思.其主语往往是事物,而不是人. 1)接名词或动名词作宾语. The simple house suggested a modest income. 这座简朴的房子表明(房主的)收入并不高. Her pale face suggested bad health. 她脸色苍白,看来身体不好. The thought of summer suggests swimming. 一想到夏天就使人们联想到游泳. 2)接宾语从句,从句用陈述语气.如: The decision suggested that he might bring his family. 这个决定表明他可以把家属带来. The expression on his face suggested that he was very angry. 他脸上的表情表明他很生气. 四、在主语从句It is suggested that... 及名词suggestion 后面表示具体建议的表语从句、同位语从句都应用should+动词原形,should可以省略.如: It was suggested that we (should) give a performance at the party. 人们建议我们在晚会上表演节目. His suggestion was that the debts (should) be paid off first. 他的建议是先把债务还清. The doctors made a suggestion that the new hospital (should) not be set up on the hill. 医生们建议不要把新医院建在山上.

const,static,extern用法总结

--------------------------CONST--------------------------------------- const应用: 一、对于基本声明 const int r=100;//标准const变量声明加初始化,编译器经过类型检查后直接用100在编译时替换。 二、对于指针 1. int x=10; const int *r=&x; //指针指向的内容是常量,r指向的内容不能够通过r改变,但如果是非const,内容可以通过自己改变,而且r指针可以改变,可以指向其它的整形. //*r=*r+1;NO //x++;YES //r=&y;YES 2. int const *r=&x; 与1完全相同 3. int * const r=&x; //指针指向是常量,不能修改去指向其它内容,但指向的内容可以修改 //r=&y;NO //*r=*r+1;YES //x++;YES 4.const int * const r=&x; //综合1、3用法,r是一个指向常量的常量型指针,指针指向不能改变,指针内容不能改变,内容可以自身改变 //r=&y;NO //*r=*r+1;NO //x++;YES 三、对于类型检查 可以把非const对象赋予const指针,这样就不能改变.但是不能把const赋给非const,除非先强制转换 const int x=100; int *p=(int*)&x; *p++; 四、对于函数 1.void Fuction1(const int r); //此处为参数传递const值,意义是变量初值不能被函数改变 2.const int Fuction1 (int); //此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字。 3.Class CX; //内部有构造函数,声明如CX(int r =0) CX Fuction1 () { return CX(); } const CX Fuction2 () { return CX(); } Fuction1() = CX(1); //没有问题,可以作为左值调用 Fuction2() = CX(1); //编译错误,const返回值禁止作为左值调用。 4.函数中指针的const传递和返回: int F1 (const char *pstr); //作为传递的时候使用const修饰可以保证不会通过这个指针来修改传递参数的初值 const char *F2();//意义是函数返回的指针指向的对象是一个const对象,它必须赋给一个同样是指向const对象的指针 const char * const F3(); //比上面多了一个const,这个const的意义只是在他被用作左值时有效,它表明了这个指针除了指向const对象外,它本身也不能被修改,所以就不能当作左值来处理。 五、对于类 1.首先,对于const的成员变量,只能在构造函数里使用初始化成员列表来初始化,试图在构造函数体内进行初始化const成员变量会引起编译错误。初始化成员列表形如:X:: X ( int ir ): r(ir) {} //假设r是类X的const成员变量 注意:类的构造和析构函数都不能是const函数。 2.建立了一个const成员函数,但仍然想用这个函数改变对象内部的数据。(函数不能修改类的数据成员)

相关文档