引用 | 编辑
i-c0112
2011-01-19 18:03 |
楼主
▼ |
||
![]() 错误讯息: <329> : erro 038: extra characters on line出错部分内容: 复制程式 #define DEBUG 1 ... /*327*/ #if DEBUG == 1 /*328*/ client_print(0, print_notify, msg2) /*329*/ #elseif DEBUG >= 2 /*330*/ client_print(0, print_center, msg2) /*331*/ #endif 实在不知道为什么错...Pawn_Language_Guide.pdf里也是这么用的= = 还是我的compiler有问题!? ![]()
|
引用 | 编辑
史来姆
2011-01-19 19:35 |
3楼
▲ ▼ |
为甚么你要这样写呢?
#define DEBUG 1 .... if (DEBUG>=1) xxxx else if (DEBUG>=2) yyyyy 这样不行么? ![]() |
引用 | 编辑
a7811311622
2011-01-20 17:28 |
6楼
▲ ▼ |
大概是因为…「#define」写出来的都是定值…是不会变化的…
毕竟用到「#elseif」代表这数值存在着变化… 所以「拿判断式来判断一个不可能会变化的值」这点可能有问题吧… ![]() |
引用 | 编辑
a7811311622
2011-01-21 01:00 |
8楼
▲ ▼ |
引用 | 编辑
z1022001
2011-01-21 08:14 |
10楼
▲ ▼ |
会不会是要写成:?
/*327*/ #if DEBUG == 1 /*328*/ client_print(0, print_notify, msg2) /*329*/ #elseif DEBUG >= 2 ... ![]() |
引用 | 编辑
a7811311622
2011-01-21 12:32 |
12楼
▲ ▼ |
下面是引用 i-c0112 于 2011-01-21 01:39 发表的 : 算了…那不重要…反正刚才自己不小心推翻自己的说法了… 目前我是知道为何会编译错误了…原因其实是…逻辑错误… 如果你改成: 复制程式 #define DEBUG 1 #if DEBUG >= 2 #elseif DEBUG >= 1 #endif 这样编译就没问题了…至于为何你原本的写法会错误…? 原因是: 复制程式 //当 DEBUG >= 1 时早就包括 DEBUG >= 2 的内容了… //所以编译时才会出现错误「extra characters on line」…因为以逻辑上来说这行的确是多余的… #if DEBUG >= 1 #elseif DEBUG >= 2 #endif //当 DEBUG >= 2 时并不包括 DEBUG >= 1 的内容了… //因为有唯一的例外:DEBUG == 1 ,所以逻辑上没错误… #if DEBUG >= 2 #elseif DEBUG >= 1 #endif 后来又发现上面说法又被推翻了…好像不是逻辑的问题… ![]() 如果将原本的写法改成: 复制程式 #define DEBUG 1 #if DEBUG >= 2 #elseif DEBUG == 1 #endif 这样也不会编译错误…目前又只能猜测… 「#if」里比较的内容要大于「#elseif」里比较的内容? ![]() ![]() ![]() ![]() |
引用 | 编辑
i-c0112
2011-01-21 14:56 |
13楼
▲ ▼ |
下面是引用 a7811311622 于 2011-01-21 12:32 发表的 :这个现象好像是这样的: 当#if 的条件达成时 #elseif 就会出错 因为我照大大的改是可以compile 但是改成 #define DEBUG 2后又不行了... 所以我只好改成这样了...变得比较麻烦 复制程式 #define DEBUG 2 #if DEBUG >= 2 say_hello(0) #else #if DEBUG == 1 say_hi(0) #endif #endif ![]() |