搜索
查看: 4062|回复: 10

插件编写的小问题(关于#define)

[复制链接]
发表于 2008-4-25 13:08:38 | 显示全部楼层 |阅读模式 来自 中国–辽宁–沈阳
#define FIRSTMODE    (1<<0)
这个 (1<<0) 是做什么用的呢? 这种预定义有什么意义?
发表于 2008-4-25 13:22:45 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 插件编写的小问题(关于#define)

1<<0就是1,要看具体情况才知道干什么用的
回复

使用道具 举报

 楼主| 发表于 2008-4-25 14:08:26 | 显示全部楼层 来自 中国–辽宁–沈阳

回复: 插件编写的小问题(关于#define)

哦 是这样啊
那直接定一成 #define FIRSTMODE 1多好呀...
那 (1<<1)就是2了吗?

感谢jim_yang的回复,话说这种定义方式真是诡异啊,c++,c里都没有吧,pawn语言的教材里不知道有没有= =
回复

使用道具 举报

发表于 2008-4-25 14:16:16 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 插件编写的小问题(关于#define)

c,c++当然有了,这么定义是为了程序员读代码方便
比如你需要用到(1<<31),就比写它的整数形式容易读
回复

使用道具 举报

 楼主| 发表于 2008-4-25 14:29:12 | 显示全部楼层 来自 中国–辽宁–沈阳

回复: 插件编写的小问题(关于#define)

汗 恕我没能理解...
我知道#define student_number 20
在程序中直接用student_number代替20,这样其他程序员更明了的知道这个int的实际含义
但是如果我要用firstmode做一个判断(假设这里firstmode是amxx.cfg中的一个参数值)
应该是 firstmode& xx 这种形式吧,如果我想定义firstmode是1,那就:

#define fistmode 1就可以了,为何要firstmode (1<<0)呢? 程序员在程序中看到的都是firstmode,而不是1,也不是(1<<0)呀...我没编程经验,请jim_yang前辈指导...
回复

使用道具 举报

发表于 2008-4-25 16:45:38 | 显示全部楼层 来自 中国–广东–广州

回复: 插件编写的小问题(关于#define)

是位移符!~~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2008-4-25 16:53:42 | 显示全部楼层 来自 中国–辽宁–沈阳

回复: 插件编写的小问题(关于#define)

位移符号可以参与判断语句?
回复

使用道具 举报

发表于 2008-4-25 17:02:29 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 插件编写的小问题(关于#define)

你没明白我的意思,我是说在宏定义的时候写(1<<x)比写整数更容易读,当然在读程序代码时候你不用管它是什么,用宏定义好的标识符就行了
回复

使用道具 举报

发表于 2008-4-25 20:52:18 | 显示全部楼层 来自 中国–江西–南昌

回复: 插件编写的小问题(关于#define)

这是位移符,可能是为了排列整齐,形式统一才写成1<<0形式
回复

使用道具 举报

 楼主| 发表于 2008-4-25 21:38:24 | 显示全部楼层 来自 中国–辽宁–沈阳

回复: 插件编写的小问题(关于#define)

懂了,感谢各位的耐心,热心滴回答~~~~
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表