学习钟馗舞剑的寓意基本步骤

荀子的《劝学》用了什么修辞手法_百度知道
荀子的《劝学》用了什么修辞手法
用了比喻的修辞手法。《劝学》是《荀子》一书的首篇。又名《劝学篇》。劝学,就是鼓励学习。本篇较系统地论述了学习的理论和方法。前一部分,论述学习的重要性;后一部分,论述学习的步骤、内容、途径等有关问题;而以“学不可以已”作为贯穿全文的中心思想。荀子认为,学习可以增长知识才干,修养品德气质;持之以恒、坚持不懈是正确的学习态度;要学习儒家经典,同时要善于向贤者求教,也要善于教人;学习要善始善终,切忌半途而废,以期达到完全而纯粹的精神境界。
荀子(约公元前313-前238),名况,时人尊而号为“卿”,西汉时为避汉宣帝刘询讳,因“荀”与“孙”二字古音相通,故又称孙卿。汉族,战国末期赵国猗氏(今山西安泽县)人,著名思想家、文学家、政治家,先秦儒家的最后代表人物。
曾两次到当时齐国的文化中心稷下(今山东临淄)游学,担任过列大夫的祭酒(学宫领袖)。还到过秦国,拜见了秦昭王。后来到楚国,任兰陵(今山东兰陵)令。荀子对儒家思想有所发展,提倡“性恶论”,其学说常被后人拿来跟孟子的“性善说”比较。荀子对重新整理儒家典籍也有相当显著的贡献。与其弟子撰成《荀子》一书。
其他类似问题
为您推荐:
提问者采纳
《劝》《荀》书首篇名《劝篇》劝鼓励习本篇较系统论述习理论前部论述习重要性;部论述习步骤、内容、途径等关问题;已作贯穿全文思想荀认习增知识才干修养品德气质;持恒、坚持懈确习态度;要习儒家经典同要善于向求贤者求教要善于教;习要善始善终切忌半途废期达完全纯粹精神境界文章围绕已论点习意义、作用、态度等面条理、层加阐述量运用比喻说明道理篇君曰:已《劝》篇第句整《荀》著作第句荀认本性恶必须用礼义矫所特别重视习性恶论荀社政治思想发点著作首先提习停止想抓住关键解决根本问题十重视问题所自见解通君口提示郑重提论点语言简劲命意深广自引文滔滔阐述青取于蓝青于蓝;冰水寒于水比喻任何通发愤习都能进步今我胜昨我超师两比喻使习受启发鼓舞要能青于蓝寒于水决今明辍所能办必须断说:已所两比喻深刻力说明论点催奋进接着文章进步设喻根本阐明道理:木直绳輮轮其曲规虽槁暴复挺者輮使习者更鼓励强调习重要作用文章设喻引论断:故木受绳则直金砺则利君博参省乎则知明行矣木材经墨线量取直金属制刀剑类拿磨刀石磨锋利比君广泛习且每检查省察自知识通达行没错设喻引论断显更说服力论断句字与起句已已字紧密呼应突要知明行必须断习力阐明论点篇至第段段说明习改变素质、提高智力面重意义习意义重荀认习能单靠坐房苦思冥想必须利用外界事物向实际习第二段首先说明:吾尝终思矣须臾所荀亲身体验通终思与须臾比强调空想习与空想相字言喻指利用外界事物向实际习种于习见解荀基于认识论提荀否认孟所说良知良能强调外界实际事物习提概念具唯物主义素接着连设五喻展论证荀先经验说起:站高处望比踮起脚见广阔;登高招手顺风呼喊手臂并非更声音并非更家却能远远看清楚听;见利用高处、利用顺风作用推广假舆马假舟楫并非善于走路或擅游泳却能致千绝江河由于设喻所用事例都见读起亲切且觉信随着断设喻阐明道理越越深入读者灵于水渠结论:君非异善假于物说君所超般才德善于利用外物习推论起善于利用外物习变才德君与第段所说青于蓝、冰寒于水、直木輮车轮意脉贯结构暗相呼应外荀所与善假于物联系起意味着习目要认识客观事物规律并利用些规律性知识改造客观世界(引自严北溟关于《劝》说明)与制命思想联系着至第二段结束段说明习必须善于利用外物外界实际事物习候需要注意所第三段作进步说明文章先设两喻引论点:积土山风雨兴焉;积水渊蛟龙焉;积善德神明自圣备焉说明习要注意积累荀根本承认圣说指要努力习积善积德具备圣思想圣断习《性恶》篇所说:积善息涂禹充强调积善作用与提已脉相承、遥相呼应笔设喻引论点更加强论点语势使论点现具定说服力接着文章进行申述:故积跬步至千;积流江海反面设喻说明积累重要经反设喻习要注意积累道理已初步阐明深入说明文章反复设喻比:先骐骥跃能十步与驽马十驾功舍相比再锲舍朽木折与锲舍金石镂相比充显示舍重意义习要注意积累道理进步证明习要做舍要断积累必须专能浮躁文章再蚓爪牙利筋骨强能够食埃土饮黄泉与蟹六跪二螯却非蛇蟮穴寄托进行比说明习必须专致志能粗浮气两比喻强调习必须坚持懈并照应文层层论述第三段至结束通段层层比喻我清楚理解习必须持恒至篇提已论点已深入阐发充证明《劝》三段论述习重要性指习应该采取态度虽荀论基础唯主义性恶论批判孟先道德论起积极作用由于历史条件限制荀能懂阶级性礼义应该具备道德并且符合封建伦理规范行叫做善符合叫做恶劝目实际要培养合乎封建统治阶级道德规范才与我今习目本质区别新兴主阶级登政治舞台、全走向统历史期进步意义至于文阐述要重视习及习必须善假于物、逐渐积累、持恒等见解今我说定启发作用借鉴意义文除少数直接说明道理外几乎都比喻通比喻阐述道理、证明论点本文写作特色由于创造比喻技巧高些比喻精警青取于蓝青于蓝(脱化青于蓝胜于蓝)及积跬步至千;积细流江海、锲舍朽木折;锲舍金石镂等等都作指导习格言称引同运用比喻式灵阐述层意思单独设喻连续设喻;面设喻反面设喻;比喻互相映衬比喻进行比层层推进呼应使本身表现力强比喻更充持发挥作用道理阐述十透彻再说由于运用比喻文章语言显具体形象、精练味且随着用比连续手变换形整齐富于变化句式产铿锵起伏节奏表现荀谆谆劝激情仅篇色古代教育论文且作篇文作品欣赏[6] 写作特点本文运用量见比喻抽象道理说明白、具体、深入浅使读者容易接受比喻形式种用同类事物设喻相同角度反复说明问题强调作者观点例:登高招顺风呼假舆马假舟楫积土山积水渊两种相反情况组织起形鲜明照让读者明白道理例骐骥与驽马照朽木与金石照设喻式先反先反内容各侧重句式变化读者毫板滞比喻单说比喻道理隐含其让读者思考青于蓝冰寒于水先设比喻再引道理登高招臂非加见者远假舟楫者非能水绝江河先设比喻引道理再用另外比喻进步论证先用积土山积水渊设喻引积善德神明自圣备焉道理再用积跬步积流作进步论证[4] 《劝》各段条理十清楚基本每段阐述具体问题且总文章、结尾部作明确交代例文章第句写道:君曰:已既全文论题第段所要始阐述内容段结尾部则归结道:君博参省乎则知明行矣明确力照应首句收束文并且清楚点明该段思想第二段先用吾尝终思矣须臾所说明独自冥思苦想远习益列举登高招顺风呼假舆马假舟楫等几十见极说服力比喻力结道:君(性)非异善假于物荀性恶论观点发指君性恶其所同于众于善于向良师益友习嘉言懿行改变自良性物字舟楫舆马类变习内容文字逐渐深化举两例都首尾相互照应些段落段首揭示该段或者段末予适概括总目相同式却并死板先秦诸哲理散文般都比较难读荀种谨严、朴实写作帮助读者掌握各段文章基本内容十效说理文巧妙运用量比喻进行论述《劝》另十突特点作品集些并列比喻同角度反复说明问题种手修辞叫做博喻般都用辅助景物描写荀作品博喻都用说明事理作者采用比两种相反情况组织起形鲜明照增强文字说服力例强调习必须持恒、用专用些并列比喻用些相反相比喻列举骐骥跃能十步驽马十驾功舍;锲舍朽木折锲舍金石镂;及爪牙利筋骨强蚯蚓竟能自六跪二螯螃蟹却连容身洞掘表明积与积所产效截相反荀哲思想积字重要观点荀认要所必须坚持懈进行积累期耕田(积耨耕)农夫期砍砍削削(积削)工匠;期贩卖货物(积反货)商贾;期习礼义(积礼义)君;圣所积像越安越夏(原)安夏习惯自已解荀思想观点重要意义我难懂要费力气选择比喻惮烦读者进行谆谆教导值注意作者善于通比喻议论逐步引向深入忽视特点我众比喻弄眼花缭乱理清文字脉络试第段例全段除首尾各句论断性外其余全部由比喻组作者先用青于蓝冰寒于水两比喻说明影响改变事物本性并能使所发展接提另比喻:绳直木经改造变其曲规车轮;即使晒干枯槁能再复直状态说明影响改变事物本性说起着决定性作用道理阐述向前推进步再用木受绳则直金砺则利两比喻引结论博参省乎重要性段比喻主文字提问题进行结逻辑性强再前面提积字段例积土山风雨兴焉积水渊蛟龙焉比喻积善德神明自圣备焉才意说积善要达德境界才能改变气质具备圣思想情紧承论断展现我眼前四组比喻阐述前相承两层意思前面三组论述积字重要性:积跬步至千;积流江海面说明积事;骐骥与驽马朽木与金石两组比比喻则着重表明积与积必产两种同结前组比偏重主观条件析组比偏重客观情况析三组比喻结合使用道理讲十清楚面部另组蚯蚓螃蟹比喻指用专积关键论述进步引向深入至关积字基本内容已经谈清于作者紧扣用专进行结荀种用比喻说理写其先秦诸散文罕见应说种独创《劝》第三重要特点句式整齐读琅琅口作者注意排偶适夹进散句使文气流畅呆滞
来自团队:
修辞手法的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于学习方法的名言_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
关于学习方法的名言
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
你可能喜欢当前位置:&&
本页文章导读:
&&&&?eLua学习第三课:Lua脚本语言的基础入门教程&&&&&&
eLua学习第三课:
---Lua脚本语言基础入门教程
(作者:LL&& 出处:http://blog.csdn.net/tcpipstack , 欢迎转载,也请保留这段声明。谢谢!)
经过第二课&eLua学习第二课:在Ubuntu OS下的Lua......&&&&?subversion 1.7.8 linux下的安装笔记&&&&&&
因为eclipse换成了4.2.1,里面自带的svn就更新到了1.8.0,在命令终端中用1.6版本的svn就不能使用了,就只能去安装1.7+的svn。
安装subversion-1.7.8 需要依赖以下包:
SQLite-3.7.15.1, Apr-Util-1.5.1 and neon......&&&&?跟我一起玩Win32开发(2):完整的开发流程&&&&&&上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都......
&&&&&&最新IT科技资讯推荐:
[1]eLua学习第三课:Lua脚本语言的基础入门教程
&&&&来源:&互联网& 发布时间:&
eLua学习第三课:
---Lua脚本语言基础入门教程
(作者:LL&& 出处:http://blog.csdn.net/tcpipstack , 欢迎转载,也请保留这段声明。谢谢!)
经过第二课&eLua学习第二课:在Ubuntu OS下的Lua源码安装方法 的学习,我们已经将Lua的开发环境安装好了,那么在这一课中我们将学习Lua的基本知识。
写在前面的话
编程语言之于程序员,若武功招式之于习武之人,招式虽重要,但在于使用之人。胜者之道,武功只行于表,高手用剑,片草只叶亦威力无穷。
当今武林,派别林立,语言繁杂,林林总总不计其数。主流文化的C/C++、Java、C#、VB;偏安一隅的Fortran;动态语言中的Perl、Tcl、Ruby、Forth、Python,以及本书介绍的Lua;..,等等等等。
虽说语言的威力依使用者本身的修为高低而定,但不同语言本身的设计又有不同。若让用Java写写操作系统内核、Perl写写驱动程序、C/C++写写web应用,都无异于舍近求远,好刀只用上了刀背。
Lua本身是以简单优雅为本,着眼于处理那些C不擅长的任务。借助C/C++为其扩展,Lua可闪现无穷魅力。Lua本身完全遵循ANSI C而写成,只要有C编译器的地方,Lua便可发挥她的力量。Lua不需要追求Python那样的大而全的库,太多的累赘,反而会破坏她的优美。
(以上内容摘自《Lua中文教程》)
从Hello World开始
hello world作为所有编程语言的起始阶段,所有的编程第一步就在于此了!
我们先使用Lua语言来实现这一步:
root@long-desktop:/work/prjs/lua-5.2.1# lua
Copyright (C)
Lua.org, PUC-Rio
& print &Hello World&
Hello World
& io.write(&Hello World\n&)
Hello World
上面的代码展示了2种实现方法,io.write(&Hello World\n&) 更符合Lua的style,推荐使用。
Lua的基本语法
在Lua中,一切都是变量,除了关键字。请记住这句话。
标示符:字母(letter)或者下划线开头的字母、下划线、数字序列.最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。Lua中,letter的含义是依赖于本地环境的。
保留字:以下字符为Lua的保留字,不能当作标识符。
and break do else elseif
end false for function if
in local nil not or
repeat return then true until
写一个程序,总是少不了注释的。
在Lua中,你可以使用单行注释和多行注释。
单行注释中,连续两个减号&--&表示注释的开始,一直延续到行末为止。相当于C++语言中的&//&。
多行注释中,由&--[[&表示注释开始,并且一直延续到&]]&为止。这种注释相当于C语言中的&/*…*/&。在注释当中,&[[&和&]]&是可以嵌套的。
print(10) -- no action (comment)
4. Lua语句
在Lua中,语句之间可以用分号&;&隔开,也可以用空白隔开。一般来说,如果多个语句写在同一行的话,建议总是用分号隔开。
Lua 有好几种程序控制语句,如:
  条件控制:if 条件 then … elseif 条件 then … else … end  While循环:while 条件 do … end  Repeat循环:repeat … until 条件  For循环:for 变量 = 初值,终点值,步进 do … end  For循环:for 变量1,变量2,… ,变量N in表或枚举函数 do … end
  注意一下,for的循环变量总是只作用于for的局部变量,你也可以省略步进值,这时候,for循环会使用1作为步进值。
  你可以用break来中止一个循环。
  如果你有程序设计的基础,比如你学过Basic,C之类的,你会觉得Lua也不难。但Lua有几个地方是明显不同于这些程序设计语言的,所以请特别注意。
  .语句块
    语句块在C++中是用&{&和&}&括起来的,在Lua中,它是用do 和 end 括起来的。比如:&
    do print(&Hello&) end
    你可以在 函数 中和 语句块 中定局部变量。
  .赋值语句
    赋值语句在Lua被强化了。它可以同时给多个变量赋值。
    例如:
    a,b,c,d=1,2,3,4
    甚至是:
    a,b=b,a -- 多么方便的交换变量功能啊。
    在默认情况下,变量总是认为是全局的。假如你要定义局部变量,则在第一次赋值的时候,需要用local说明。比如:
    local a,b,c = 1,2,3 -- a,b,c都是局部变量
  .数值运算
    和C语言一样,支持 +, -, *, /。但Lua还多了一个&^&。这表示指数乘方运算。比如2^3 结果为8, 2^4结果为16。
    连接两个字符串,可以用&..&运处符。如:
    &This a & .. &string.& -- 等于 &this a string&
  .比较运算
    & & &= &= == ~=
    分别表示 小于,大于,不大于,不小于,相等,不相等
    所有这些操作符总是返回true或false。
    对于Table,Function和Userdata类型的数据,只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如:
    a={1,2}
    b=a
    print(a==b, a~=b) -- true, false
    a={1,2}
    b={1,2}
    print(a==b, a~=b) -- false, true
  .逻辑运算
    and, or, not
    其中,and 和 or 与C语言区别特别大。
    在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
    and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
    a and b:如果a为false,则返回a;否则返回b
    a or b:如果 a 为true,则返回a;否则返回b
    举几个例子:
     print(4 and 5) --& 5
     print(nil and 13) --& nil
     print(false and 13) --& false
     print(4 or 5) --& 4
     print(false or 5) --& 5
    在Lua中这是很有用的特性,也是比较令人混洧的特性。
    我们可以模拟C语言中的语句:x = a? b : c,在Lua中,可以写成:x = a and b or c。
    最有用的语句是: x = x or v,它相当于:if not x then x = v end 。
  .运算符优先级,从高到低顺序如下:
    not - (一元运算)
     * /
     + -
     ..(字符串连接)
     & & &= &= ~= ==
     and
     or
5. Lua变量类型
怎么确定一个变量是什么类型的呢?大家可以用type()函数来检查。Lua支持的类型有以下几种:
  Nil 空值,所有没有使用过的变量,都是nil。nil既是值,又是类型。
  Boolean 布尔值
  Number 数值,在Lua里,数值相当于C语言的double
  String 字符串,如果你愿意的话,字符串是可以包含'\0'字符的
  Table 关系表类型,这个类型功能比较强大,我们在后面慢慢说。
  Function 函数类型,不要怀疑,函数也是一种类型,也就是说,所有的函数,它本身就是一个变量。
  Userdata 嗯,这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。
  Thread   线程类型,在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。如果感兴趣的话,可以去看看Lua的文档。
6. &变量的定义
[2]subversion 1.7.8 linux下的安装笔记
&&&&来源:&
& 发布时间:&
因为eclipse换成了4.2.1,里面自带的svn就更新到了1.8.0,在命令终端中用1.6版本的svn就不能使用了,就只能去安装1.7+的svn。
安装subversion-1.7.8 需要依赖以下包:
SQLite-3.7.15.1, Apr-Util-1.5.1 and neon-0.29.6 或者
对于这些最好不要尝试自己去编译,直接用下面命令即可,各个包又会依赖于其他包,累人!(Apr-Util依赖于Apr,neon依赖于libxml2-2.9.0 或者 expat-2.1.0)
sudo aptitude install libneon27
sudo aptitude install libsqlite3-0
sudo aptitude install libapr1
sudo aptitude install libaprutil1-dev
wget http://mirrors.tuna./apache/subversion/subversion-1.7.8.tar.gz
tar -zxvf subversion-1.7.8.tar.gz
./configure --disable-static --without-berkeley-db
sudo make install
make: *** [subversion/libsvn_subr/libsvn_subr-1.la] Error 1
--with-apr
和 --with-apr-util要指源码包里面,不能指安装好的地方的
/usr/local/lib/libz.a: could not read symbols:
解决办法:
cd zlib-1.2.3
./configure
vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
-- & CFLAGS=-O3 -DUSE_MMAP -fPIC
重新编译下zlib即可!
已有 0 人发表留言,猛击-&&这里&&-参与讨论
—软件人才免语言低担保 赴美带薪读研!—
[3]跟我一起玩Win32开发(2):完整的开发流程
&&&&来源:&互联网& 发布时间:&
上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接口中的方法类似,即只定义,不实现。好处就是多态,发何处理,由派生类来决定。
在开始吹牛之前,我先推荐一套视频教程,孙鑫老师的C++教程,共20课,我不是帮他老人家打广告,而是因为孙老师讲的课是我听过的最好的课,我都看过4次了,我完全可以用他的视频教程来复习C++的。
好了,F话说完了,下面我就扯一下编写一个Win32应用程序的大致流程,不管你的程序有多么复杂,多么变态,其基本思路和流程是不变的。这就好比你写书法的时候,特别是写楷书,我不管你用的是欧体、颜体,还是柳体,你都得遵守“永字八法”基本规则。
那么,我们要编写一个Win32应用程序,要经过哪几个步骤呢?
你不妨想一想,你有一家工厂是生产女性服装的,如果你要生产一批新式服装(例如某种冬装),你会有哪些流程?
首先,如果我们确定要做这么一款服式,我们要请设计师来把服装设计好,然后打版,打版就是生成基本样本,以后工人就按照这个样本做就行了。
其次,注册产品,向上级主管申报,登记后就转入车间或下游加工企业开工。
再次,为了展示你的新产品的特色,你要举办一场服装表演。
接着、持续更新,发现产品存在的问题,不断改进修正。
最后,推向市场。
我们开发Win32应用程序也是遵守这样的规范。不过,我想现在很少人用Win32在实际开发中,毕竟它的开发效率是相当地低下,所以,曾被某些人误认为只适用于开发木马程序。其实,也不一定的,不要太邪恶了。
MFC对Win API函数的封装,后来出现了托管C++,你可以用于写WinForm程序,这样可以提高开发效率。
如果你有足够的时间,如果你还在学习编程,如果你是刚进入大学的年轻有为者,你不用急,因为你会有更多的时间磨炼,你应当考虑多学一点C类语言,C++的学习你会发现你能学到很多其他语言中学不到的知识,特别是接触到不少原理性的东西,能加深你对编程哲学的认知。
一、WinMain入口点
我们在学习标准C++的时候,都知道每个应用程序运行时都会先进入入口点函数main,而当从main函数跳出时程序就结束了。在Windows编程里面,也是一样的,只是我们的入口点函数不叫main,叫WinMain,这个函数不同于main,我们不能乱来,它的定义必须与声明保持一致。
我建议各位安装VS的时候,都顺便更新帮助文档到本地硬盘,这样我们可以方便查找。有一点要注意,目前DestTop Develop的文档基本上是英文的,做好心理准备。
WinMain函数怎么写呢,不用记的,到MSDN文档一搜,直接复制就行了。
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
这个函数带了一个CALLBACK,说明它是一个回调函数,那么这个CALLBACK是啥呢。我们先不管,我们先动写一个Windows,让大家有一个更直观的认识。
1、启动你的开发工具,版本任意。
2、从菜单栏中依次【文件】【新建】【项目】,在新建项目窗口中,选择Win32-Win32应用程序。
2、点击确定后,会弹出一个向导,单击【下一步】。项目类型选择Windows应用程序,附加选项选择空项目,我们要自己编写实现代码。
3、单击完成,项目创建成功。打开【解决方案资源管理器】,在“源文件”文件夹上右击,从菜单中找到【添加】【新建项】,注意,是源文件,不要搞到头文件去了。
在新建项窗口中选C++代码文件,.cpp后缀的,不要选错了,选成头文件,不然无法编译,因为头文件是不参与编译的。文件名随便。
包含Windows.h头文件,这个是最基本的。
#include &Windows.h&
然后是入口点,这个我们直接把MSDN的声明Ctrl + C,然后Ctrl + V上去就行了。
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
WinMain返回整型,返回0就行了,其实是进程的退出码,一定要0,不要写其他,因为0表示正常退出,其他值表示非正常退出。
刚才我们提到这个函数带了CALLBACK,那么,它是什么?很简单,你回到IDE,在CALLBACK上右击,选【转到定义】,看看吧。
我们看到它其实是一个宏,原型如下:
#define CALLBACK
这时候我们发现了,它其实就是__stdcall,那么这个__stdcall是什么呢?它是和__cdecl关键字对应的,这些资料,你网上搜一下就有了,如果你觉得不好理解,你不妨这样认为,__stdcall是专门用来调用Win API 的,反正MSDN上也是这样说的,它其实是遵循Pascal的语法调用标准,相对应地,__cdecl是C语言的调用风格,这个也是编译器选项。
打开项目属性,找到节点C/C++\高级,然后查看一下调用约定,我们看到默认是选择C风格调用的,所以,WIN API 函数才用上关键字__stdcall,如果你实在不懂,也没关系,这个东西一般不影响我们写代码,但属性窗口中的编译器选项不要乱改,改掉了可能会导致一些问题。
那么CALLBACK有什么特别呢?一句话:函数不是我们调用的,但函数只定义了模型没有具体处理,而代码处理权在被调用者手里。怎么说呢,我们完全把它理解为.NET中的委托,我想这样就好理解了,委托只声明了方法的参数和返回值,并没有具体处理代码。
WinMain是由系统调用的,而WinMain中的代码如何写,那操作系统就不管了。就好像我告诉你明天有聚会,一起去爬山,反正我是通知你了,至于去不去那是你决定了。
接下来看看入口点函数的参数。
注意,我们平时看到很多如HANDLE,HINSTANCE,HBRUSH,WPARAM。LPARAM,HICON,HWND等一大串数据类型,也许我们会说,怎么Windows开发有那么多数据类型。其实你错了,人总是被眼睛所看到的东西欺骗,Win API 中根本没有什么新的数据类型,全都是标准C++中的类型,说白了,这些东西全是数字来的。如果你不信,自己可以研究一下。
它定义这些名字,只是方便使用罢了,比如下面这样:
int theAppI
第一个变量指的是窗口的句柄,第二个指的是一个图标的句柄,第三个是当前应用程序的实例句柄,你看看,如果我们所有的句柄都是int,我们就无法判断那些类型是专门用来表示光标资源,不知道哪些类型是专用来表示位图的句柄了,但是,如果我们这样:
#defin HBRUSH
这样就很直观,我一看这名就知道是Brush Handlers,哦,我就明白它是专门用来管理内存中的画刷资源的,看,这就很明了,所以,通常这些新定义的类型或者宏,都是取有意义的名字。比如消息,它也是一个数字,如果我说115代表叫你去滚,但光是一个115谁知道你什么意思,但是,如果我们为它定义一个宏:
#define WM_GET_OUT
这样,只要我SendMessage(hwnd, &WM_GET_OUT, NULL, NULL),你就会收到一条消息,滚到一边去。
WinMain的第一个参数是当前应用程序的实例句柄,第二个参数是前一个实例,比如我把kill.exe运行了两个实例,进程列表中会有两个kill.exe,这时候第一次运行的实例号假设为0001,就传递第一个参数hInstance,第二次运行的假设实例号为0002,就传给了hPrevInstance参数。
lpCmdLine参数从名字上就猜到了,就是命令行参数,那LPSTR是啥呢,它其实就是一个字符串,你可以跟入定义就知道了,它其实就是char*,指向char的指针,记得我上一篇文章中说的指针有创建数组的功能吗?对,其实这里传入的命令行参数应该是char[ ],这就是我在第一篇文章中要说指针的原因。
这里告诉大家
最新技术文章:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,站长邮箱:www_169it_(请将#改为@)

我要回帖

更多关于 紫雾团团员的血舞剑 的文章

 

随机推荐