区分保留字跟关键字

原创 2004年02月29日 13:25:00

     我最近在看李维的<Inside VCL>.李维在书中第一章中举的第一个console程序中有以下的函数声明:

function WindowProc(Window:HWND;AMessage:UINT;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;export;

不知道你想过一个问题没:在Delphi中是不区分大小写的,也就是说这里的声明中变量名和类型名相同了.而我们在学Pascal,C/C++的时候,老师常对我们说不能去关键字作为变量名,为什么这里又能使用呢?

     我刚开始看到这里的时候很困惑,所以我查看了Dephi7的<Delphi Language Guide>,终于找到了答案:那就是保留字(Directives)跟关键字(Reserved words)的区别.

    在<Delphi Language Guide>中提到:The following reserved words cannot be redefined or used as identifiers.也就是说关键字是不能作为变量名的.书中对保留字的说明如下:

Directives are words that are sensitive in specific locations within source code. Deriectives have special meanings in the Delphi language,but unlike reserved words,appear only in contexts where user-defined identifiers cannot occured.Heance-although it is inadvisable to do so-you can define an identifier  that looks exactly like a directive.也就是说保留字则是可以用作变量名的.

    这就解释了为什么在前面的函数声明中允许出现WParam:WPARAM;这种声明.顺便说一下的是李维在<Inside VCL>一书中的第31页小字解说部分说"C/C++ Builder为了更好的执行效率而使用了关键字message来分派窗口消息...",这里关键字应该改为保留字才对,因为Message是保留字而非关键字.我们在阅读VCL的源代码时也常可以看到用Message作为变量名的.

 

JavaScript(ES5)使用保留字作函数名

ES5允许直接使用保留字作为属性名,但却不允许直接使用保留字作为函数名 设现有类NSMap,若要给NSMap的原型加delete方法,如 function NSMap(){ } NSMap.pr...
  • flashdelover
  • flashdelover
  • 2014年06月21日 18:32
  • 1159

typedef和#define的用法与区别

一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef    int       IN...
  • jsjrj01
  • jsjrj01
  • 2010年05月27日 13:42
  • 414

JS关键字和保留字小结

1 关键字 break case catch continue default delete do else finally for function if in instanceof new ret...
  • liaozhongping
  • liaozhongping
  • 2015年08月09日 13:10
  • 1174

Java关键字与保留字说明及使用

JAVA关键字与保留字说明及使用 abstract boolean  break  byte  case  catch  char  class  cont...
  • q547550831
  • q547550831
  • 2015年11月13日 15:27
  • 13840

StringTemplate学习笔记

stringTemplate是一个模板引擎,同时支持java,C#,Python. 大家可以从http://www.stringtemplate.org下载. StringTemplate 语法说明...
  • z69183787
  • z69183787
  • 2016年07月26日 17:28
  • 1901

C++突破private访问权限的黑科技

昨天,有位同事抛出了一个问题:一个class内有一个private属性的struct类型,然后他想做的事情是,在继承该class的子类中复用这个类型,但是由于该类似的private属性,编译是不通过的...
  • jiange_zh
  • jiange_zh
  • 2016年08月12日 14:10
  • 1429

Java之关键字和保留字

原文地址:Java之关键字和保留字 1 名字不能用保留字和关键字,但如果保留字或关键字中有字母大写就不算保留字或关键字了。 2 开头字符能用字母,$或者_ 3 名字中不能用+ ,...
  • qq_34163820
  • qq_34163820
  • 2016年08月22日 19:14
  • 1085

java中“53”个关键字(含2个保留字)

1.java的关键字(keyword)有多少个?    51+2个保留字=53个关键字(java的关键字都是小写的!!)         2.java的保留字(re...
  • u012506661
  • u012506661
  • 2016年10月08日 14:40
  • 11963

typedef (包含对复杂函数声明的理解)

typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等。在C语言中,信息被抽象为int、float和 double 等基本数据类型。从基本数据类型名称上,不能够看出其所代表的...
  • yangruibao
  • yangruibao
  • 2011年08月30日 18:13
  • 2006
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:区分保留字跟关键字
举报原因:
原因补充:

(最多只允许输入30个字)