区分保留字跟关键字
2004-02-29 13:25
309 查看
我最近在看李维的<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作为变量名的.
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作为变量名的.
相关文章推荐
- Delphi中对时间操作方法汇总
- VC与Delphi之间动态链接库互相调用
- 用Ole Automation实现Delphi和AutoCad之间的数据交换
- delphi中的时间操作技术(1)
- delphi中的时间操作技术(2)
- IP地址的隐藏(delphi实现 )
- 解析IP地址为主机域名
- 将某一主机域名解析为IP地址
- 开发工具浅谈
- 用VB和MTS开发多层数据库应用系统
- 纯编码实现数据库的建立或压缩
- 从数据库中动态选取下拉列表的方法
- Decal SDL-Delphi的范型类库-通用数据结构与算法类库(一)
- 编译器(解释器)编写指南-编写编译器(解释器)的工具-LEX
- 关于LoadRunner压测过程中出现的error26601的解释
- MySQL - undefined function mysql_connect()
- 使用PowerShell统计子文件夹大小(改良版)
- 使用PowerShell统计子文件夹大小
- cannot convert parameter 2 from 'const char [12]' to 'LPCWSTR'