http://laska-samp.biz/articles/pawn-book/oshibki
°•°•° Проект SAMP - Romashka [0.3e] ™18+™ °•°•° :: Теория :: Pawn

Warning

%s- переменная
Переменная - это хранилище данных, куда мы можем записывать  различные данные для их последующего вызова. Тоесть действия с переменными предельно просты: запись информации,вывод и использование информации. Если присмотрется ближе, то список можно пополнить еще одним пунктом - объявление переменной. 

Каждая переменная имеет свое название, чтобы компилятор мог отличить друг от друга переменные, название мы задаем при объявлении. Оператор объявления переменной - new
 
1) warning 219: local variable "%s" shadows a variable at a preceding level

Это значит что переменная дважды объявлена. 

Пример

new neka;
new neka;

Что же нам делать, а вот что:  1) мы можем одну из них удалить;  2) можем изменить;
Но не стоит забывать что при изменении переменной нам нужно заменить все что её касается  вот пример правильного изменения:

new neka1;
neka1 = CreatePickup(1239, 2, 1380.3220,-1771.3235,13.5469);

2) warning 217: loose indentation

Это значит что код не табулирован(код не построен лесенкой) 

Пример:

stock LSNews(color,const string[])
{for(new i = 0; i < MAX_PLAYERS; i++)
{if(IsPlayerConnected(i))
{ if(!lNews[i])
{ SendClientMessage(i, color, string);}}}}

пример правильного табулирования 

stock LSNews(color,const string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {             if(!lNews[i])
            {
                SendClientMessage(i, color, string);
            }
        }
    }
}

Что же делать? ответ прост 
1) мы можем делать все вручную 
2) можем поставить #pragma tabsize 0
3) можем с помощи notepad++ все исправить (на форуме есть урок)
pragma tabsize - Он просто маскирует эти warning и не более

3) warning 235: public function lacks forward declaration %s  

Это означает что у функции нету forward

Пример:

Вы создали паблик 

 public lol()

И увас появляется этот варинг что же делать? 
добавляем forward

 forward lol();
public lol()

если вы не хотите каждый раз писать forward то можно сделать так:

#define public:%1(%2)
forward %1(%2); public %1(%2)

и тогда новые паблики мы пишем так

public:lol()

4) warning 216: nested comment ; 

Вот так это выглядит

/*case 458:   // Fire&lvl  

исправление

case 458:    // Fire&lvl

5) warning 213: tag mismatch

Это означает не совпадения аргументов 
вот допустим самый простой случай:

#define CreateObject CreateDynamicObject
#define MoveObject MoveDynamicObject 

решение простое

#define CreateObject, CreateDynamicObject
#define MoveObject, MoveDynamicObject

6) warning 201: redefinition of constant/macro

Это означает что в дефайнах(define)

Пример:

#define OnPlayerEnterRaceCheckpoint
#define OnPlayerEnterRaceCheckpoint

Решение одну из двух удалить

7) warning 200: symbol "%s" is truncated to 31 characters  

Это обозначает что мы при создании переменной ввели больше 31 символа 

Пример:
new sssssssssssssssssssssssssssssss;

Решение:

Просто сменить название или укоротить !

8) warning 202: number of arguments does not match definition

Это значит что у нас не совпадают аргументы
Возьмем самый простой пример:

SendAdminMessage(COLOR_LIGHTRED, string, 5);

Проблема заключается в 5, которая написана после string.

Найдём 

stock SendAdminMessage
stock SendAdminMessage(color, string[])  
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pAdmin] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
}

Объясню как можно понятней и проще. Обратим внимание на эту строчку:

stock SendAdminMessage(color, string[])

Как мы видим используется только color и string[], следовательно 5 будет лишней. 

9) warning 203: symbol is never used: %s

Это означает что данный символ нигде не используется 

Пример :
Создадим допустим переменную

new respon;

И тут у нас возникает 

(1578) warning 203: symbol is never used: "respon"

Что же делать? 

Ответ прост:

найти эту переменную и удалить 

10) warning 204: symbol is assigned a value that is never used %s

Это значит что создали переменную и массив а он негде не используется 

Пример:

new blabal[15];

Решения: просто удалить

11) warning 209: function "%s" should return a value

Это значит что наша функция не возвращается(простыми словами нету return 1; или return 0

пример:
 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   if (newkeys == 1024)
   {
   OnPlayerCommandText(playerid,"/Blablabal");
   return 1; <========Вот наш return ДО
   }
}

Решения:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   if (newkeys == 1024)
   {
   OnPlayerCommandText(playerid,"/Blablabal");
   }
   return 1;
 <========Вот наш return ПОСЛЕ}
 Общий список warning-ов
warning 200:
 symbol "%s" is truncated to 31 characters
 название переменной %s обрезается до 31 символа (укоротите название переменной %s);
warning 201:
 redefinition of constant/macro (symbol "%s")
 двойное определение одинаковой константы (смотреть #define);
warning 202:
 number of arguments does not match definition
 несовпадение количества аргументов;
warning 203:
 symbol is never used: "%"
 символ "%" нигде не используется;
warning 204:
 symbol is assigned a value that is never used: "%s"
 символ создан, ему присваивается значение, но далее он не используется;
warning 208:
 function with tag result used before definition, forcing reparse
 использование функции типа bool до её объявления в коде;
warning 209:
 function "%s" should return a value
 функция %s должна возвращать какое-либо значение (return 1; к примеру);
warning 211:
 possibly unintended assignment
 в условии использовано не сравнение, а присвоение;
warning 213:
 tag mismatch
 несовпадение тэгов;
warning 215:
 expression has no effect
 выражение не имеет эффекта;
warning 216:
 nested comment
 вложенный комментарий (вынесите его за функцию);
warning 217:
 loose indentation
 невыровненная строка (return должен быть строго под телом функции по левому краю, либо можно добавить в начало мода строку #pragma tabsize 0, но это не рекомендуется, так как иногда может не понимать и не прочитывать скобки "{" и "}");
warning 219:
 local variable "%s" shadows a variable at a preceding level
 переменная дважды объявлена;
warning 224:
 indeterminate array size in "sizeof" expression (symbol "%s")
 должен быть определён размер массива %s (если определён статиком, заменить дефайном);
warning 225: unreachable code невалидный код;
warning 235:
 public function lacks forward declaration (symbol "%s")
 необходим форвард функции %s (перед функцией пишем forward %s ; );

Источник: pawno-web#ru/topic/115-ispravlenie-warning/



Опубликовано 12 March 2015