mythkina 发表于 2008-4-25 13:08:38

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

#define FIRSTMODE    (1<<0)
这个 (1<<0) 是做什么用的呢? 这种预定义有什么意义?

jim_yang 发表于 2008-4-25 13:22:45

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

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

mythkina 发表于 2008-4-25 14:08:26

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

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

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

jim_yang 发表于 2008-4-25 14:16:16

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

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

mythkina 发表于 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)

是位移符!~~~~~~~~~

mythkina 发表于 2008-4-25 16:53:42

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

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

jim_yang 发表于 2008-4-25 17:02:29

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

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

nopain 发表于 2008-4-25 20:52:18

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

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

mythkina 发表于 2008-4-25 21:38:24

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

懂了,感谢各位的耐心,热心滴回答~~~~
页: [1] 2
查看完整版本: 插件编写的小问题(关于#define)