#define这个定义跟const这个定义有什么区别

mynameisking 2004-05-08 05:43:06
#define PTCL_SYST_USERINFO 0x0c 这是在VC中写法.
不知道在delphi中能否用
const PTCL_SYST_USERINFO=$0c代替它.

顺便问一下#define这个做什么用的?
...全文
32 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mynameisking 2004-05-09
“geyobing(大地精灵)” 一语惊人,终于惊醒梦中人。不过我至少读了20多遍geyobing(大地精灵)那段话才吾出道理来。还要多谢楼上众位
  • 打赏
  • 举报
回复
大地精灵 2004-05-09
const就是定义常量

而#define则不一样,它具有替换作用,也就是你预定义一部分指令,到时候只需要把它写在程序里,编译的时候就等于这一部分指令写在里面一样
  • 打赏
  • 举报
回复
lijinghe1 2004-05-08


#define定义的一定永远是常量.
//不准确,编译时被定义的东东替换,#define PTCL_SYST_USERINFO 0x0c//这句可以这样理解

const定义的不一定永远是常.
//理解正确,但是将const常量转为变量是一个非常不好的编程风格,除非必须这么做(如写某些接口程序)
--------------------------------------------
这个问题应在c++讨论吧
  • 打赏
  • 举报
回复
大地精灵 2004-05-08
宏替换在DELPHI里是不存在的,所以你需要跟VC的那些同事说清楚,
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
高手呀,发表大句话嘛,因为我这个项目是跟vc混合开发,他们vc哪边就是用#define定义宏,可是我这边不知道咱跟他们那边接口
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
up起来再让。。。。。。。。
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
我得出了一点结论:

#define定义的一定永远是常量.

const定义的不一定永远是常.

这两个的区别就在这里,不知道我这样理解对不对?
  • 打赏
  • 举报
回复
耙子 2004-05-08
#define 是编译器用的宏指令,不算作C语言的语句。在编译的过程中就完全替换掉了。

pascal 的const和 c的const 有些类似,都是常量,但是delphi的const 通过编译开关可以修改,而不用永远是常量。
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
干嘛要用#define定义变量呢,直接用var I:integer不行吗?
ME想得要湖涂了
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
判断标志?

var
I:integer=159;
...

if a=I then ....也就是说I就变成159这个标志? 我好像快要糊涂了
  • 打赏
  • 举报
回复
楚人无衣 2004-05-08
就是判断是不是存在这样一个标志,若存在就执行某一操作
  • 打赏
  • 举报
回复
mynameisking 2004-05-08
什么叫预编译指令?
做什么用?
  • 打赏
  • 举报
回复
楚人无衣 2004-05-08
$DEFINE预编译指令,在工程中都可用;常量定义就用const了,其所定义只能在begin...end之间用
  • 打赏
  • 举报
回复
bankhank 2004-05-08
delphi里的const指的就是常量啊
  • 打赏
  • 举报
回复
fim 2004-05-08
常量啊,楼主说得很对,delphi里面没有#define
  • 打赏
  • 举报
回复
发帖
Delphi

5137

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2004-05-08 05:43
社区公告
暂无公告