搜档网
当前位置:搜档网 › be to do的用法

be to do的用法

be to do的用法
be to do的用法

“be to do”的用法

一般说来,“be to do”这个结构有两种语法意义,其一是连系动词be+动词不定式做表语,其二是be to是一个独立词汇单位,具有情态含义,可以把它叫做情态习语

(modal idiom)。

一、be +动词不定式, 不定式做表语,表示主语和表语在概念上是等同的。如:

The problem is to find a solution.

His plan is to clean the room.

My wish is to be a doctor.

二、be to +动词不定式中的be to用作情态习语, 这时的be to do表示: “计划”、“安排”、“义务”、“应该”、“可能”、“命运”等。(have to, ought to)。如:

He is to have a holiday. (表示将来)

The committee is to meet today. (表示计划、安排)

You are to go to the hotel where rooms have already been booked for you.

1. 表示“将”、“计划”、“安排”。(意思接近于be going to) 如:

Their daughter is to get married soon.

Who is to question him?

It was the last film at the cinema,which was to close next day. After dinner they were to go to a movie.

was/ were to do 表示过去曾经计划要做的事,或者过去应当做的事,而且从现在的角度来看已经实现了。如:

I felt nervous because I was soon to leave home for the first time.

I was to play Juliet.

The expedition was to start in a week’s time.

was/ were to have done, 表示“本打算”、“本计划”或“本应当”做的事而没有做成或没有发生。如:

I was to have seen him last Wednesday, but he didn’t come.

We were to have been married last year.

2. 表示“义务”、“应该”。(意思接近于

should,must,ought to,have to) 如:

No one is to leave the building. 谁也不得离开这楼房。

You are not to smoke in this room.=You are not supposed to smoke in this room.

You are to be back by 10 o’clock.你必须十点以前回来。

3. 表示可能性, 相当于can, may 如:

Such books are to be found in the library. 这样的书在图书馆里就能找

到。

Not a single sound was to be heard. 一点儿声音也听不到。

Not a soul was to be seen. 看不到一个人影。

She was nowhere to be found. 哪儿也找不到她。

She was never to see his wife and family again.

5. 表示“命运”,将来必然要发生的事, 译作“注定……”。如:

He came to power, but he was to play dearly for it: soon he was a

ssassinated.

The worst is still to come.

They said goodbye, little knowing they were never to meet again. 6. 用于“if…were to do”,表示虚拟语气。如:

If it were to rain tomorrow, the sports meeting would be put off. 如果明天下雨, 运动会就会延期。

"be to do"的5种用法

一、表示“按计划、安排即将发生某事或打算做某事”。

例:She is to be seen in the lab on Monday.(星期一你准会在实验室见到她。

二、该做或不该做的事情(语气上接近于should, must, ought to, have to),表示一种命令、规劝性语气。

例:You are to go to bed and keep quiet, kids. Our guests are arriving in less than 5 minutes.(孩子们,你们必须上床睡觉,不准吵闹。我们的客人5分钟之内就要到了。)三、能或不能发生的事情(接近can, may)

例:How am I to pay such a debt?(我怎么可能还得起这么大的一笔债呢?)

四、不可避免将要发生的事情,后来将要发生的事情。

五、用于条件从句“如果……想,设想”(接近if ……want to,或if ……should)

(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

todo与doing的区别

--- to do与doing的区另U 一般情况下,to do 是一般将来式,是打算去做什么(未做);doing是现在进行式,是现在正在做什么,或(此事已做过或已发生、正做) like to do 和like doing 的用法有什么区别 简单的记忆方法。当表示喜欢,用like doing ,如:He likes cooking in his house. She likes singing. 表示爱好。 当表示想要,欲做某事(但还没进行)用like to do ,例如:He likes to cook in his house.- 他想在自己家做饭吃。 She likes to stay with us.- 她想和我们带一块儿。(但还没进行) 2 forget doin g/to do forget to do 忘记要去做某事。(未做) forget doing 忘记做过某事。(已做) The light in the office is stil on. He forgot to turn it off. 办公室的灯还在亮着,它忘记关了。(没有做关灯的动作) He forgot turning the light off. 他忘记他已经关了灯了。(已做过关灯的动作) Don't forget to come tomorrow. 别忘了明天来。(to come动作未做) 3 remember doin g/to do remember to do 记得去做某事(未做) remember doing 记得做过某事(已做) Remember to go to the post office after school. 记着放学后去趟邮局。 Don't you remember see ing the man before? 你不记得以前见过那个人吗? 感官动词 see, watch, observe, notice, look at, hear, listen to, smell, taste, feel +doing表示动作的连续性,进行性 I saw him working in the garden yesterday. (强调”我见他正干活”这个动作) 昨天我见他正在花园里干活。

C++ #pragma code_seg用法

#pragma code_seg 格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节,如果code_seg 没有带参数的话,则函数存放在.text节中。 push (可选参数)将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名 pop(可选参数)将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名identifier(可选参数)当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数)表示函数存放的节名 例如: //默认情况下,函数被存放在.text节中 void func1() {// stored in .text } //将函数存放在.my_data1节中 #pragma code_seg(".my_data1") void func2() {// stored in my_data1 } //r1为标识符,将函数放入.my_data2节中 #pragma code_seg(push, r1, ".my_data2") void func3() {// stored in my_data2 } int main() { } 例如 #pragma code_seg(“PAGE”) 作用是将此部分代码放入分页内存中运行。 #pragma code_seg() 将代码段设置为默认的代码段 #pragma code_seg("INIT") 加载到INIT内存区域中,成功加载后,可以退出内存

todoanddoing用法

加to do 的动词 attempt企图enable能 够 neglect忽视afford负担得 起 demand要求long渴 望 arrange安排destine注 定 mean意欲,打算begin开 始 expect期望omit忽略,漏 appear似乎,显得determine决定manage设 法cease停止 hate憎恨,厌恶pretend假装 ask问dread害 怕 need需要agree同 意

desire愿望love 爱 swear宣誓volunteer志愿 wish希望bear承 受 endeavor努力offer提 供 beg请求fail不 能 plan计划 bother扰乱;烦恼forget忘 记 prefer喜欢,宁愿care关心,喜欢happen碰 巧prepare准 备decide决 定learn学 习 regret抱歉,遗憾choose选择hesitate犹 豫profess表明

claim要求hope希 望 promise承诺,允许start开始undertake承 接want想要 consent同意,赞同intend想要refuse拒 绝decide决定 learn学习vow起contrive设法,图谋incline有…倾向propose提议seek 找,寻觅 try试图 2)下面的动词要求不定式做宾补:动词+宾语+动词不定式 ask要求,邀请get请,得 到 prompt促使allow允 许 forbid禁止prefer喜欢,宁愿announce宣 布force强

迫 press迫使bride 收 买 inspire鼓舞request请求 assist协助hate憎 恶 pronounce断定,表示advise 劝告exhort告诫,勉 励pray请求 authorize授权,委托help帮 助recommend劝告,推荐bear容 忍implore恳 求remind提醒 beg请求induce引 诱 report报告compel强 迫 invite吸引,邀请,summon传 唤command命 令intend想要,企

常见的todo与doing

常见的“to do”与“doing”现象 有些动词后既可接to do,也可接doing,它们后接to do与doing在意思上有时有较大的差别。因为它们也是中考的常考点之一,因而我们应该搞清楚它们的区别。 1. stop to do/stop doing sth。 解析:stop to do sth.意为“停下来(正在做的事)去做(另外的)某事”,to do sth.在句中作目的状语。而stop doing sth.意为“停止做(正在做的)某事”。如Mary stopped to speak to me.玛丽停下(手头的工作)来跟我讲话。 When the teacher came in. the students stopped talking.老师进来时,学生们停止讲话。 2. remember to do/remember doing sth 解析:remember to do sth.意为“记住要去做某事”(还没有做)。而remember doing sth.意为“记得(已经)做过某事”如: Please remember to send the letter for me.请记住为我发这封信。 I don’t remember eating such food somewhere.我不记得在哪里吃过这种食物 3. forget to do/forget doing sth 解析:forget to do sth.意为“忘记做某事”(动作还没有发生)。而forget doing sth.意为“忘记做过某事”(动作已发生)。如: Don’t forget to bring your photo here.别忘了把你的相片带来。 I have forgotten giving the book to him.我忘记我已把书给了他。 4. go on to do/go on doing sth 解析:go on to do sth.意为“做完一件事,接着做另外一件事”,两件事之间有可能有某种联系。而go on doing sth.意为“继续做下去”。如: After reading the text, the students went on to do the exercises.学生们读完课文后,接着做练习。 It’s raining hard, but the farmers go on working on the farm.虽然天正下着大雨,但农民们继续在农场干活。 5. try to do/try doing sth 解析:try to do sth.意为“尽力去做某事”,而try doing sth.意为“(用某一种办法)试着去做某事”。如: Try to come a little early next time, please.下次请尽量早点来。 You can try working out the problem in another way.你可以试试用其它的方法解答这道题目。 6. can’t help to do/can’t help doing sth 解析:can’t help to do为动词不定式结构;can’t help doing sth.意为“身不由己地去做某事”或“情不自禁地去做某事。”如: We can’t help to finish it.我们不能帮忙完成此事。 I couldn’t help laughing when I saw her strange face.当我看到她奇怪的脸时,我情不自禁地笑了。 7. hear sb. do/hear sb. doing sth 解析:hear sb. do sth.意为“听见某人做某事”,指听到了这个动作的全过程;hear sb. doing sth.意为“听到某人做某事”,指听到时候,这个动作正在发生。如: I often hear him sing in the classroom.我经常听见他在教室里唱歌。 Do you hear someone knocking at the door?你听见有人在敲门吗? 应该说明的是:和hear的用法一样的还有see、watch、notice等。

C++ #pragma预处理命令

#pragma预处理命令 #pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma 指令: #pragma comment(lib,"XXX.lib") 表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。 #pragma comment(linker,"/ENTRY:main_function") 表示指定链接器选项/ENTRY:main_function #pragma once 表示这个文件只被包含一次 #pragma warning(disable:4705) 表示屏蔽警告4705 C和C++程序的每次执行都支持其所在的主机或操作系统所具有的一些独特的特点。例如,有些程序需要精确控制数据存放的内存区域或控制某个函数接收的参数。#pragma为编译器提供了一种在不同机器和操作系统上编译以保持C和C++完全兼容的方法。#pragma是由机器和相关的操作系统定义的,通常对每个编译器来说是不同的。 如果编译器遇到不认识的pragma指令,将给出警告信息,然后继续编译。Microsoft C and C++ 的编译器可识别以下指令:alloc_text,auto_inline,bss_seg,check_stack,code_seg,comment,component,conform,const_seg,data_seg,deprecated,fenv_access,float_control,fp_contract,function,hdrstop,include_alias,init_seg,inline_depth,inline_recursion,intrinsic,make_public,managed,message,omp,once,optimize,pack,pointers_to_members,pop_macro,push_macro,region, endregion,runtime_checks,section,setlocale,strict_gs_check,unmanaged,vtordisp,warning。其中conform,init_seg, pointers_to_members,vtordisp仅被C++编译器支持。 以下是常用的pragma指令的详细解释。 1.#pragma once。保证所在文件只会被包含一次,它是基于磁盘文件的,而#ifndef 则是基于宏的。

todo和doing的差别

To do 和 doing的用法 1. finish, enjoy, feel like, consider, imagine, keep, postpone, delay, mind, practise, suggest, risk, quit+doing 2. 1)forget to do 忘记要去做某事(此事未做) forget doing忘记做过某事(此事已做过或已发生) 2)stop to do 停止、中断(某件事),目的是去做另一件事 stop doing 停止正在或经常做的事 3)remember to do 记住去做某事(未做) remember doing记得做过某事(已做) 4) regret to do对要做的事遗憾 regret doing对做过的事遗憾、后悔 5)try to do努力、企图做某事 try doing试验、试一试某种办法 6) mean to do打算,有意要… mean doing意味着 7)go on to do 继而(去做另外一件事情) go on doing 继续(原先没有做完的事情) 8)propose to do 打算(要做某事) proposing doing建议(做某事) 9) like /love/hate/ prefer +to do 表示具体行为;+doing sth 表示抽象、倾向概念 (注)如果这些动词前有should一词,其后宾语只跟不定式,不能跟动名词。例如: I should like to see him tomorrow. 10) need, want, deserve +动名词表被动意义;+不定式被动态表示“要(修、清理等)”意思。 Don’t you remember seeing the man before你不记得以前见过那个人吗 You must remember to leave tomorrow.你可要记着是明天动身。 I don’t regret telling her what I thought.我不后悔给她讲过我的想法。(已讲过) I regret to have to do this, but I have no choice.我很遗憾必须这样去做,我实在没办法。(未做但要做) You must try to be more careful.你可要多加小心。 Let’s try doing the work some other way.让我们试一试用另外一种办法来做这工作。 I didn’t mean to hurt your feeling.我没想要伤害你的感情。 This illness will mean (your) going to hospital.得了这种病(你)就要进医院。 3.省to 的动词不定式 1)情态动词 ( 除ought 外,ought to): 2)使役动词 let, have, make: 3)感官动词 see, watch, look at, notice , observe, hear, listen to, smell, feel, find 等后作宾补,省略to。 注意:在被动语态中则to 不能省掉。 I saw him dance.

doing,todo,do的用法

一.To do形式 afford to do sth. 负担得起做某事 agree to do sth. 同意做某事 arrange to do sth.安排做某事 ask to do sth. 要求做某事 beg to do sth. 请求做某事 care to do sth. 想要做某事 choose to do sth. 决定做某事 decide to do sth. 决定做某事 demand to do sth. 要求做某事 expect to do sth. 期待做某事 fear to do sth. 害怕做某事 help to do sth. 帮助做某事 hope to do sth. 希望做某事 learn to do sth. 学习做某事 manage to do sth. 设法做某事 offer to do sth. 主动提出做某事 plan to do sth. 计划做某事 prepare to do sth. 准备做某事 pretend to do sth. 假装做某事 promise to do sth. 答应做某事 refuse to do sth. 拒绝做某事 want to do sth. 想要做某事 wish to do sth. 希望做某事 happen to do sth. 碰巧做某事 struggle to do sth. 努力做某事 advise sb. to do sth. 建议某人做某事allow sb. to do sth. 允许某人做某事 ask sb. to do sth.请(叫)某人做某事bear sb. to do sth.忍受某人做某事 beg sb. to do sth. 请求某人做某事cause sb. to do sth. 导致某人做某事command sb. to do sth. 命令某人做某事drive sb. to do sth .驱使某人做某事elect sb. to do sth. 选举某人做某事encourage sb. to do sth. 鼓励某人做某事expect sb. to do sth. 期望某人做某事forbid sb. to do sth. 禁止某人做某事force sb. to do sth. 强迫某人做某事 get sb. to do sth. 使(要)某人做某事hate sb. to do sth. 讨厌某人做某事 help sb. to do sth. 帮助某人做某事

#pragma data code ICCAVR的使用

#pragma data:code 在Keil中为了节省数据存储器的空间,通过“code”关键字来定义一个数组或字符串将被存储在程序存储器中: uchar code buffer[]={0,1,2,3,4,5}; uchar code string[]="Armoric" ; 而这类代码移值到ICCAVR上时是不能编译通过的。我们可以通过"const" 限定词来实现对存储器的分配: #pragma data:code const unsigned char buffer[]={0,1,2,3,4,5}; const unsigned char string[]="Armoric"; #pragma data:data 注意: 《1》使用ICCAVR6.31时,#pragma data :code ;#pragma data:data ; 这些语法时在"data:cod"、"data:data"字符串中间不能加空格,否则编译不能通过。 《2》const 在ICCAVR是一个扩展关键词,它与ANSIC标准有冲突,移值到其它的编译器使用时也需要修改相关的地方。 在ICCAVR中对数组和字符串的五种不同空间分配: const unsigned char buffer[]={0,1,2,3,4,5}; //buffer数组被分配在程序存储区中 const unsigned char string[]="Armoric" ; //stringp字符串被分配在程序存储区中 const unsigned char *pt //指针变量pt被分配在数据存储区中,指向程序存储区中的字符类型数据 unsigned char *const pt //指针变量pt被分配在程序存储区中,指向数据存储区中的字符类型数据 const unsigned char *const pt //指针变量pt被分配在程序存储区,指向程序存储区中的字符类型数据 unsigned char *pt //指针变量pt被分配在数据存储区中,指向数据存储区中的数据 请问#pragma data:code和#pragma data:data是什么意思? 前者表示:随后的数据将存贮在程序区,即FLASH区,此区只能存贮常量,比如表格之类。

非常实用的动词后加todo和doing做宾语总结

动词后加to do 和doing 的记忆口诀一. 只能用动名词作宾语 口诀:考虑建议盼原谅,承认推迟没得想。 避免错过继续练,否定完成停欣赏, 禁止想象才冒险,不禁介意弃逃亡。 ①consider 考虑suggest建议/advocate提倡主张 look forward to 盼望 forgive原谅/pardon原谅 ②acknowledge承认/admit 承认postpone延迟延期/delay延迟/defer 拖延 recall回想/fancy幻想爱好 ③avoid 避免 miss错过 keep保持 practice练习实践 ④deny否认 complete完成/finish 完成cease 停止/quit放弃停止appreciate 感激欣赏 ⑤forbid禁止/prevent阻止 imagine 设想 risk冒险

⑥can't help不禁mind 介意escape逃跑逃避 二. 接不定式作宾语的动词 【速记口诀】 三个希望两答应,两个要求莫拒绝; 设法学会做决定,不要假装在选择。 【妙语诠释】 三个希望两答应:hope,wish,want,agree,promise 两个要求莫拒绝:demand,ask,refuse 设法学会做决定:manage,learn,decide 不要假装在选择:pretend,choose 三. 要求跟不定式的动词口诀 希望想学就同意(hope/wish;would like/want;learn;agree) 需要决定就选择to do(need;decide(决定);choose(选择))

开始喜爱又讨厌(begin/start;like/prefer/love;hate) 忘记又记住停止又继续尝试(forget;remember;stop;go on;try)to do; doing意不同 命令、警告邀人教(order;warn(警告);ask/tell/invite请/叫/邀请;teach sb. to do) 希望想让别人做(wish;want/would like;get(使得,答应)/allow(允许)do)

pragma的用法

#pragma的用法 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义, 编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para。其中para为参数,下面来看一些常用的参数。 1)message 参数 message参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message("消息文本") 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有 没有正确的设置这些宏, 此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏, 可以用下面的方法: #ifdef _X86 #pragma message("_X86 macro activated!") #endif 我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示"_86 macro activated!"。 我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了。 (2)另一个使用得比较多的pragma参数是code_seg 格式如: #pragma code_seg( ["section-name" [, "section-class"] ] ) 它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到 它。 (3)#pragma once (比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上 在VC6中就已经有了, 但是考虑到兼容性并没有太多的使用它。 (4)#pragma hdrstop 表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以 加快链接的速度, 但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文

初中日·总复习英语动词+doing和+todo用法

识记:初中英语非谓语动词总结(中考常考) 记住:动词后面加动名词表示已经做了;加动词不定式表示将要去做。 记住:动词后面加动名词表示经常做;加动词不定式表示一次做。 * *跟动词原形的词有:“一感二听三让四看”,即:feel, // hear, listen to, // let, make, have,// look at, see, wact notice.// 一.后面可跟动词的ing形式的情况。 1.动词:*以下记住每一个词组的第一个动词。 finish doing sth.完成做某事;enjoy doing sth. 喜欢做某事; practice doing sth. 练习做某事;imagine doing,想象做某事; avoid doing sth.避免做某事;consider doing sth.考虑做某事; suggest doing sth.建议做某事;mind doing sth.介意做某事; * keep doing sth.持续做某事, miss doing错过做, advise doing建议做;* keep sb doing让某人一直做 2.固定短语: feel like doing sth.喜欢做某事;be busy doing sth.忙于做某事; be worth doing 值得做某事;spend time (in) doing sth.花费时间(金钱)做某事; have difficult/trouble in doing sth做某事有困难;have fun doing.做某事高兴 3. 介词后(on, in, of, about, at, with, without, for, from, up, by等): 如:be good at doing sth.;thank you for doing sth.;give up doing sth.;stop sb. from doing sth.;do well in do sth.; be afraid of doing sth.;be interested in doing sth.;be proud of;instead of;be fond of;what/how about doing sth?某事怎么样? 4. to作介词时,后跟动名词的情况: look forward to doing sth期望做某事;prefer doing sth. to doing sth与…相比较更喜欢…; pay attention to doing注意做某事;be/get used to doing sth.习惯于做某事; make a contribution to doing为…做贡献 No+动名词,表示禁令No smoking禁止吸烟No parking禁止停车 5. go+动名词,意思是去进行某种活动或运动: go shopping,去购物;go skating,去滑冰;go hiking去远足(旅行) 6. do some/the+动名词,指进行某种活动: do some cleaning,搞卫生;do some washing 洗衣服; 二.后面可跟动词的不定式形式的情况。 1.动词:不需要记住哪些动词后跟动词不定式。 2.句型:(1)动词: allow sb. to do sth. 允许某人去做某事(区分allow doing sth) ask sb. (not) to do sth. 叫某人做事某事(叫某人不要去做某事) tell sb. (not) to do sth. 叫某人去(不要)做某事follow sb. to do sth. 跟随某人去做某事 get sb. to do sth. 让某人去做某事warn sb. (not) to do sth. 警告某人做某事(或不要做某事) encourage sb to do鼓励某人做、expect sb to do期待某人做 invite sb to do邀请某人做、teach sb to do教会某人做 advise sb to do建议某人做(区分advise / suggest doing sth) (2) Be+形容词adj.(即:情感类的形容词)+ to do

动词todo与doing的用法区别

一、接不定式(而不接动名词) 1.作宾语的24个常用动词afford to do sth. 负担得起做某事 agree to do sth. 同意做某事arrange to do sth.安排做某事ask to do sth. 要求做某事 beg to do sth. 请求做某事care to do sth. 想要做某事choose to do sth. 选择做某事decide to do sth. 决定做某事、 demand to do sth. 要求做某事determine to do sth. 决心做某事 expect to do sth. 期待做某事fear to do sth. 害怕做某事help to do sth. 帮助做某事hope to do sth. 希望做某事learn to do sth. 学习做某事manage to do sth. 设法做某事offer to do sth. 主动提出做某事 plan to do sth. 计划做某事 《 prepare to do sth. 准备做某事pretend to do sth. 假装做某事promise to do sth. 承诺做某事refuse to do sth. 拒绝做某事want to do sth. 想要做某事wish to do sth. 希望做某事注:有些不及物动词后习惯上也接不定式,不接动名词:aim to do sth. 打算做某事 fail to do sth. 未能做某事long to do sth. 渴望做某事 、 happen to do sth. 碰巧做某事hesitate to do sth. 犹豫做某事struggle to do sth. 努力做某事2.作宾补的36个常用动词advise sb. to do sth. 建议某人做某事 allow sb. to do sth. 允许某人做某事

stm32中使用#pragma pack(非常有用的字节对齐用法说明)

#pragma pack(4) //按4字节对齐,但实际上由于结构体中单个成员的最大占用字节数为2字节,因此实际还是按2字节对齐 typedef struct { char buf[3];//buf[1]按1字节对齐,buf[2]按1字节对齐,由于buf[3]的下一成员word a是按两字节对齐,因此buf[3]按1字节对齐后,后面只需补一空字节 word a; //#pragma pack(4),取小值为2,按2字节对齐。 }kk; #pragma pack() //取消自定义字节对齐方式 对齐的原则是min(sizeof(word ),4)=2,因此是2字节对齐,而不是我们认为的4字节对齐。 这里有三点很重要: 1.每个成员分别按自己的方式对齐,并能最小化长度 2.复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度 3.对齐后的结构体整体长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐 补充一下,对于数组,比如: char a[3];这种,它的对齐方式和分别写3个char是一样的.也就是说它还是按1个字节对齐. 如果写: typedef char Array3[3]; Array3这种类型的对齐方式还是按1个字节对齐,而不是按它的长度. 不论类型是什么,对齐的边界一定是1,2,4,8,16,32,64....中的一个. 声明: 整理自网络达人们的帖子,部分参照MSDN。 作用: 指定结构体、联合以及类成员的packing alignment; 语法: #pragma pack( [show] | [push | pop] [, identifier], n ) 说明: 1,pack提供数据声明级别的控制,对定义不起作用; 2,调用pack时不指定参数,n将被设成默认值; 3,一旦改变数据类型的alignment,直接效果就是占用memory的减少,但是performance会下降; 语法具体分析: 1,show:可选参数;显示当前packing aligment的字节数,以warning message的形式被显示; 2,push:可选参数;将当前指定的packing alignment数值进行压栈操作,这里的栈是the internal compiler stack,同时设置当前的packing alignment为n;如果n没有指定,则将当前的packing alignment数值压栈; 3,pop:可选参数;从internal compiler stack中删除最顶端的record;如果没有指定n,则当前栈顶record即为新的packing alignment 数值;如果指定了n,则n将成为新的packing aligment数值;如果指定了identifier,则internal compiler stack中的record都将被pop 直到identifier被找到,然后pop出identitier,同时设置packing alignment数值为当前栈顶的record;如果指定的identifier并不存在于internal compiler stack,则pop操作被忽略; 4,identifier:可选参数;当同push一起使用时,赋予当前被压入栈中的record一个名称;当同pop一起使用时,从internal compiler stack 中pop出所有的record直到identifier被pop出,如果identifier没有被找到,则忽略pop操作; 5,n:可选参数;指定packing的数值,以字节为单位;缺省数值是8,合法的数值分别是1、2、4、8、16。 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同; 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小化长度;规则就是每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中较小的一个对齐; 3,结构体、联合体或者类的数据成员,第一个放在偏移为0的地方;以后每个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员自身长度两个中比较小的那个进行;也就是说,当#pragma pack指定的值等于或者超过所有数据成员长度的时候,这个指定值的大小将不产生任何效果; 4,复杂类型(如结构体)整体的对齐是按照结构体中长度最大的数据成员和#pragma pack指定值之间较小的那个值进行;这样当数据成员为复杂类型(如结构体)时,可以最小化长度; 5,复杂类型(如结构体)整体长度的计算必须取所用过的所有对齐参数的整数倍,不够补空字节;也就是取所用过的所有对齐参数中最大的那个值的整数倍,因为对齐参数都是2的n次方;这样在处理数组时可以保证每一项都边界对齐; 对齐的算法:由于各个平台和编译器的不同,现以本人使用的gcc version 3.2.2编译器(32位x86平台)为例子,来讨论编译器对struct 数据结构中的各成员如何进行对齐的。 在相同的对齐方式下,结构体内部数据定义的顺序不同,结构体整体占据内存空间也不同,如下: 设结构体如下定义: struct A { int a; //a的自身对齐值为4,偏移地址为0x00~0x03,a的起始地址0x00满足0x00%4=0;

doing和todo作主语时的区别 (2) (1)

To do作主语和doing作主语有什么区别? 2011-12-21 18:49 提问者:兰志学|浏览次数:280次 例如()(protect)wild animals,we must protect the places where they live.应该是To protect对么? 我来帮他解答 2011-12-21 22:22 满意回答 本题题意为为了保护动物,我们必须保护他们生存的地方 这里用to do 作主语表目的 to do和doing 作主语的区别 1)一般来说,表示比较抽象的行为动作时多用动名词doing;表示比较具体的某次行为动作时多用不定式to do。如: No smoking is permitted here. It is not very good for you to smoke so much. Reading more is necessary. It is quite necessary to read it again. 2)在许多情况下,两者可以互换,意义上没有太大的差别。如: Seeing him happy made me happy too. It made me happy to see him happy. It is useless learning something without practising it. It is useless to learn something without practising it. 3)不定式to do作主语时,常使用形式主语结构;而动名词doing作主语时,较少用形式主语结构,只有在It is no good, It is no use, It is useless, It is worthwhile 等句型中出现it 作形式主语现象。如: It is hard to make him change him mind. It is not an easy thing to master a language. How would it be to start tomorrow? It took all his strength to move out of the crowds. It seemed a pity to give up the chance. Business is business and it will not do to be so careless. It is no good pretending to know what you don't know. It is no use regretting the past. It is worthwhile learning another language. 4)在there is no ... 句型中的主语只能用动名词doing,并且不能带逻辑主语。如: There is no denying the fact. Well, you have said it and there is no taking it back. 上述句子的意思如用不定式to do 则分别为: It is impossible to deny the fact.

#pragma指令用法汇总和解析

#pragma指令用法汇总和解析 一. message 参数。 message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条 指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 二. 另一个使用得比较多的#pragma参数是code_seg。格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节 为.text节 如果code_seg没有带参数的话,则函数存放在.text节中 push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名 pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名 identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数) 表示函数存放的节名 例如: //默认情况下,函数被存放在.text节中 void func1() { // stored in .text } //将函数存放在.my_data1节中 #pragma code_seg(".my_data1") void func2() { // stored in my_data1 } //r1为标识符,将函数放入.my_data2节中 #pragma code_seg(push, r1, ".my_data2") void func3() { // stored in my_data2 } int main() { } 三. #pragma once (比较常用) 这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次 四. #pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。

相关主题