|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
must be a constant expression ошибка
|
|
RE_an1m@t0rr | Дата: Воскресенье, 27.05.2007, 11:29:56 | Сообщение # 1 |
Лейтенант
Группа: Скриптеры
Сообщений: 77
Статус: Не в сети
| как исправить шоибку ? Error: Must be a constant expression; assumed zero on line 31 Code | /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc>
#define PLUGIN "iMsg" #define VERSION "0.1" #define AUTHOR "RE?-an1m@t0rr"
#define Msg_MsgMax_LinkExec "[iMsg]:Maximum message links execed" #define Msg_MsgNo_players "[iMsg]:No players on such team" #define Msg_MsgExec "<<Msg>> %s:%s"
new const gc_iMsg_Maxlen = 64
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("msg","cmd_Message",ADMIN_USER,"<userid,@team,name or ip> <text>") }
public cmd_Message(id,level,cid) { new arg1[32],name[33] new arg2[gc_iMsg_Maxlen] read_argv(1,arg1,31) read_argv(2,arg2,(gc_iMsg_Maxlen-1)) get_user_name(id,name,32) if(arg2[gc_iMsg_Maxlen-1] != '0') { client_print(id,print_chat,Msg_MsgMax_LinkExec) return PLUGIN_HANDLED } if(arg1[0] == '@') { new players[32],playersnum get_players(players,playersnum,"ae",arg1[1]) if(playersnum == 0) { client_print(id,print_chat,Msg_MsgNo_players) return PLUGIN_HANDLED } new i for(i=0;i<playersnum;i++) { new player = players[i] client_print(id,print_chat,Msg_MsgExec,name,arg2) } } return PLUGIN_CONTINUE } |
|
|
| |
VEN | Дата: Воскресенье, 27.05.2007, 16:35:14 | Сообщение # 2 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| А почему бы не заменитьCode | new const gc_iMsg_Maxlen = 64 | наCode | #define MSG_MAXLEN 64 | ?
|
|
| |
RE_an1m@t0rr | Дата: Воскресенье, 27.05.2007, 19:51:06 | Сообщение # 3 |
Лейтенант
Группа: Скриптеры
Сообщений: 77
Статус: Не в сети
| а ето не одно и тоже?
|
|
| |
VEN | Дата: Воскресенье, 27.05.2007, 20:03:38 | Сообщение # 4 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Нет. Первое - постоянная переменная, второе - макроконстанта.
|
|
| |
slogic | Дата: Понедельник, 28.05.2007, 15:39:53 | Сообщение # 5 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Очень странно, что PAWN не может испльзовать константу в качестве размерности при объявлении массива. Хотя если использовать [sizeof(x)], то здесь все работает. Или что-то изменили в компиляторе.
|
|
| |
VEN | Дата: Понедельник, 28.05.2007, 23:07:36 | Сообщение # 6 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Тут нет ничего странного и удивительного - компилятор на стадии прекомпиляции использует только "реальные" константы, т.е. либо макроконстанты, либо константы типа const gc_iMsg_Maxlen = 64. sizeof оператор просто получает размерность, которая также является "реальной" константой. new const создает переменную, пусть даже и с запретом ее изменения. В общепринятой терминологии это называется "constant variable".
|
|
| |
slogic | Дата: Вторник, 29.05.2007, 15:43:15 | Сообщение # 7 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| В этом и тупость, что new const - это не реальная константа, а readonly переменная. Кому нахрен нужна такая разница? Делал я кстати просто с const. Там лажа какая-то была с типами (предупреждения), плюс стали скрыты реальные ошибки (т.е. компилятор ничего про них не писал, а стал как раз после того как define вместо константы использовал).
Сообщение отредактировал slogic - Вторник, 29.05.2007, 15:43:56 |
|
| |
RE_an1m@t0rr | Дата: Вторник, 29.05.2007, 16:34:56 | Сообщение # 8 |
Лейтенант
Группа: Скриптеры
Сообщений: 77
Статус: Не в сети
| ето amxmodx developer team для разнообразия такое сделала или баг о котором они незнают?
|
|
| |
VEN | Дата: Вторник, 29.05.2007, 20:19:47 | Сообщение # 9 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Я думаю, что многие не сочли бы это за баг. Особенность pawn/compiler - возможно.
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |