Все ошибки и варнинги pawno

Pawno-Info.Ru — Портал о программировании №1

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Программы для скриптера

Подборка удобных программ для скриптера

  • Уважаемый Гость.
    — Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    — После решения Вашего вопроса (проблемы) — нажмите «Лучший ответ», на сообщении, которое его решило. За игнорирование этого действия — Вы получите соответствующее предупреждение. Мы — стараемся Вам помочь. Уделите 10 секунд — чтобы нажать кнопку. (Если у Вас нет такой возможности — укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    — Cоздавать темы с названиями «Помогите», «Плиз», «Ошибка», «Не могу найти», «Хелп» и тому подобное;
    — Cоздавать темы без детального описания того, что нужно исправить.
    — Cоздавать темы из одного скриншота.
    За игнор правил форума — Ваша тема будет удалена, а Вы получите системное предупреждение.

Статус
В этой теме нельзя размещать новые ответы.

Djon_Brain

Регистрация
17 Янв 2012
Сообщения
3,658
Лучшие ответы
2
Репутация
530

  • #1

Добрый день Уважаемые пользователи портала. Все, особенно начинающие «скриптеры» сталкиваются c error‘ми и warning‘ами. Ниже представленны все ошибки при компиляции с которыми вы можете столкнуться и что они обозначают.

ID ошибок

PHP:

error 001: expected token: "%s", but found "%s" - ожидался символ: "%s", но был найден "%s";
error 002: only a single statement (or expression) can follow each "case" - только одно заявление (или выражение) могут следовать за "case";
error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;
error 004: function "%s" is not implemented - функция %s не реализована;
error 005: function may not have arguments - функция не имеет аргументов;
error 006: must be assigned to an array - должен быть присвоен массив;
error 007: operator cannot be redefined - оператор не может быть установлен еще раз;
error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;
error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);
error 010: invalid function or declaration - неизвестная функция или декларация;
error 011: invalid outside functions - неверно вне функции;
error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;
error 013: no entry point (no public functions) - нет точки входа (не public функция);
error 014: invalid statement; not in switch - неверный оператор; не в switch;
error 015: "default" case must be the last case in switch statement - "default" должен быть последним условием в switch;
error 016: multiple defaults in "switch" - несколько "default" в switch;
error 017: undefined symbol "%s" - неизвестный символ "%s";
error 018: initialization data exceeds declared size - данные массива превышают его размер;
error 019: not a label: %s" - не метка "%s";
error 020: invalid symbol name "%s" - неверное имя символа "%s";
error 021: symbol already defined: %s" - символ уже объявлен: "%s";
error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);
error 023: array assignment must be simple assignment - назначение массива должно быть простым;
error 024: "break" or "continue" is out of context - "break" или "continue" вне контекста;
error 025: function heading differs from prototype - функция заголовка отличается от прототипа;
error 026: no matching "#if..." - не найдено "#if...";
error 027: invalid character constant - недопустимый символ в постоянной;
error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";
error 029: invalid expression, assumed zero - неверное выражение, нет результата;
error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;
error 031: unknown directive - неизвестная директива;
error 032: array index out of bounds (variable "%s") - индекс массива превышен;
error 033: array must be indexed (variable "%s") - массив должен быть проиндексирован;
error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);
error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);
error 036: empty statement - пустой оператор;
error 037: invalid string (possibly non-terminated string) - неправильная строка;
error 038: extra characters on line - лишние символы в строке;
error 039: constant symbol has no size - символьная константа не имеет размера;
error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;
error 041: invalid ellipsis, array size is not known - размер массива неизвестен;
error 042: invalid combination of class specifiers - недопустимое сочетание класса;
error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;
error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;
error 045: too many function arguments - слишком много аргументов у функции;
error 046: unknown array size (variable "%s") - неизвестный размер массива;
error 047: array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;
error 048: array dimensions do not match - размеры массива не совпадают;
error 049: invalid line continuation - неправильное продолжение строки;
error 050: invalid range - неверный диапазон;
error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";
error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;
error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;
error 054: unmatched closing brace - не найдена закрывающаяся скобка;
error 055: start of function body without function header - начало функции без заголовка;
error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть общедоступными;
error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;
error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;
error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;
error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";
error 061: "#elseif" directive follows an "#else" directive - "#else" перед "#elseif";
error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;
error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;
error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;
error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;
error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;
error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;
error 068: invalid rational number precision in #pragma - неверное число в #pragma;
error 069: rational number format already defined - формат рационального числа уже определен;
error 070: rational number support was not enabled - рациональное число не поддерживается;
error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;
error 072: "sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;
error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;
error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;
error 075: input line too long (after substitutions - введенная строка слишком длинная;
error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;
error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;
error 078: function uses both "return" and "return <value>" - функция использует "return" и "return <значение>";
error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;
error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;
error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;
error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;
error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;
error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;
error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";
error 086: unknown automaton "%s" - неизвестная автоматизация "%s";
error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";
error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;

PHP:

fatal error 100: cannot read from file: "%s" - невозможно прочитать из файла "%s";
fatal error 107: too many error messages on one line - слишком много сообщений об ошибке в одной строке;

PHP:

warning 200: symbol "%s" is truncated to 31 characters - название переменной "%s" обрезано до 31 символа;
warning 201: redefinition of constant/macro (symbol "%s") - повторно установлена постоянная/макро (переменная "%s");
warning 202: number of arguments does not match definition - несовпадение количества аргументов;
warning 203: symbol is never used: "%s" - переменная никогда не использовалась: "%s";
warning 204: symbol is assigned a value that is never used: "%s" - переменной установлено значение которое никогда не использовалось: "%s".
warning 208: function with tag result used before definition, forcing reparse - функция с результатом тега используется перед определением, заставляя повторный анализ
warning 209: function "%s" should return a value - функция "%s" ничего не возвращает;
warning 211: possibly unintended assignment - в условии использовано не сравнение, а присвоение;
warning 213: tag mismatch - несоответствие аргументов;
warning 215: expression has no effect - выражение не имеет смысла;
warning 216: nested comment - вложенный комментарий (вынесите его за функцию);
warning 217: loose indentation - не выровненная строка;
warning 219: local variable "%s" shadows a variable at a preceding level - локальная переменная "%s" встречается на предыдущем уровне;
warning 224: indeterminate array size in "sizeof" expression (symbol "%s") - неопределенный размер массива в "sizeof" выражении (переменная "%s");
warning 225: unreachable code - невыполнимый код;
warning 227: more initiallers than enum fields - больше инициализаторов, чем полей перечисления;
warning 235: public function lacks forward declaration (symbol "%s") - у public функции отсутствует forward (символ "%s");

Так же: Добавлю ссылку на Wiki: >> Кликабельно <<

Последнее редактирование модератором: 25 Июн 2022

Статус
В этой теме нельзя размещать новые ответы.
error 001: expected token: "%s", but found "%s" - ожидался символ: "%s", но был найден "%s";
error 002: only a single statement (or expression) can follow each "case" - только одно заявление (или выражение) могут следовать за "case";
error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;
error 004: function "%s" is not implemented - функция %s не реализована;
error 005: function may not have arguments - функция не имеет аргументов;
error 006: must be assigned to an array - должен быть присвоен массив;
error 007: operator cannot be redefined - оператор не может быть установлен еще раз;
error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;
error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);
error 010: invalid function or declaration - неизвестная функция или декларация;
error 011: invalid outside functions - неверно вне функции;
error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;
error 013: no entry point (no public functions) - нет точки входа (не public функция);
error 014: invalid statement; not in switch - неверный оператор; не в switch;
error 015: "default" case must be the last case in switch statement - "default" должен быть последним условием в switch;
error 016: multiple defaults in "switch" - несколько "default" в switch;
error 017: undefined symbol "%s" - неизвестный символ "%s";
error 018: initialization data exceeds declared size - данные массива превышают его размер;
error 019: not a label: %s" - не метка "%s";
error 020: invalid symbol name "%s" - неверное имя символа "%s";
error 021: symbol already defined: %s" - символ уже объявлен: "%s";
error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);
error 023: array assignment must be simple assignment - назначение массива должно быть простым;
error 024: "break" or "continue" is out of context - "break" или "continue" вне контекста;
error 025: function heading differs from prototype - функция заголовка отличается от прототипа;
error 026: no matching "#if..." - не найдено "#if...";
error 027: invalid character constant - недопустимый символ в постоянной;
error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";
error 029: invalid expression, assumed zero - неверное выражение, нет результата;
error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;
error 031: unknown directive - неизвестная директива;
error 032: array index out of bounds (variable "%s") - индекс массива превышен;
error 033: array must be indexed (variable "%s") - массив должен быть проиндексирован;
error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);
error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);
error 036: empty statement - пустой оператор;
error 037: invalid string (possibly non-terminated string) - неправильная строка;
error 038: extra characters on line - лишние символы в строке;
error 039: constant symbol has no size - символьная константа не имеет размера;
error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;
error 041: invalid ellipsis, array size is not known - размер массива неизвестен;
error 042: invalid combination of class specifiers - недопустимое сочетание класса;
error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;
error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;
error 045: too many function arguments - слишком много аргументов у функции;
error 046: unknown array size (variable "%s") - неизвестный размер массива;
error 047: array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;
error 048: array dimensions do not match - размеры массива не совпадают;
error 049: invalid line continuation - неправильное продолжение строки;
error 050: invalid range - неверный диапазон;
error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";
error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;
error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;
error 054: unmatched closing brace - не найдена закрывающаяся скобка;
error 055: start of function body without function header - начало функции без заголовка;
error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть общедоступными;
error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;
error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;
error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;
error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";
error 061: "#elseif" directive follows an "#else" directive - "#else" перед "#elseif";
error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;
error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;
error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;
error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;
error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;
error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;
error 068: invalid rational number precision in #pragma - неверное число в #pragma;
error 069: rational number format already defined - формат рационального числа уже определен;
error 070: rational number support was not enabled - рациональное число не поддерживается;
error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;
error 072: "sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;
error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;
error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;
error 075: input line too long (after substitutions - введенная строка слишком длинная;
error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;
error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;
error 078: function uses both "return" and "return <value>" - функция использует "return" и "return <значение>";
error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;
error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;
error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;
error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;
error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;
error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;
error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";
error 086: unknown automaton "%s" - неизвестная автоматизация "%s";
error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";
error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;

From SA-MP Wiki

Jump to: navigation, search

Contents

  • 1 General Pawn Error List
  • 2 Error categories
    • 2.1 Errors
    • 2.2 Fatal errors
    • 2.3 Warnings
  • 3 Common Errors
    • 3.1 001: expected token
    • 3.2 002: only a single statement (or expression) can follow each “case”
    • 3.3 004: function «x» is not implemented
    • 3.4 025: function heading differs from prototype
    • 3.5 035: argument type mismatch (argument x)
    • 3.6 036: empty statement
    • 3.7 046: unknown array size (variable x)
    • 3.8 047: array sizes do not match, or destination array is too small
    • 3.9 055: start of function body without function header
  • 4 Common Fatal Errors
    • 4.1 100: cannot read from file: «<file>»
  • 5 Common Warnings
    • 5.1 202: number of arguments does not match definition
    • 5.2 203: symbol is never used: «symbol»
    • 5.3 204: symbol is assigned a value that is never used: «symbol»
    • 5.4 209: function should return a value
    • 5.5 211: possibly unintended assignment
    • 5.6 213: tag mismatch
    • 5.7 217: loose indentation
    • 5.8 219: local variable «foo» shadows a variable at a preceding level
    • 5.9 225: unreachable code
    • 5.10 235: public function lacks forward declaration (symbol «symbol»)
  • 6 External Links

General Pawn Error List

This pages contains the most common errors and warnings produced by the pawn compiler when creating SA:MP scripts.

When the compiler finds an error in a file, it outputs a message giving, in this order:

  • the name of the file
  • the line number were the compiler detected the error between parentheses, directly behind the filename
  • the error class (error, fatal error or warning)
  • an error number
  • a descriptive error message

For example:

hello.pwn(3) : error 001: expected token: ";", but found "{"

Note: The error may be on the line ABOVE the line that is shown, since the compiler cannot always establish an error before having analyzed the complete expression.

Error categories

Errors are separated into three classes:

Errors

  • Describe situations where the compiler is unable to generate appropriate code.
  • Errors messages are numbered from 1 to 99.

Fatal errors

  • Fatal errors describe errors from which the compiler cannot recover.
  • Parsing is aborted.
  • Fatal error messages are numbered from 100 to 199.

Warnings

  • Warnings are displayed for unintended compiler assumptions and common mistakes.
  • Warning messages are numbered from 200 to 299.

Common Errors

001: expected token

A required token is missing.

Example:

error 001: expected token: ";", but found "return"
main()
{
    print("test") // This line is missing a semi-colon. That is the token it is expecting.
    return 1; // The error states that it found "return", this is this line it is referring to,
    // as it is after the point at which the missing token (in this case the semi-colon) should be.
}

002: only a single statement (or expression) can follow each “case”

Every case in a switch statement can hold exactly one statement.
To put multiple statements in a case, enclose these statements
between braces (which creates a compound statement).

Example:

error 002: only a single statement (or expression) can follow each "case"
main()
{
    switch(x)
    {
        case 0: print("hello"); print("hello");
    }
    return 1;
}

The above code also produces other warnings/errors:

error 002: only a single statement (or expression) can follow each "case"
warning 215: expression has no effect
error 010: invalid function or declaration

Fixed:

main()
{
    switch(x)
    {
        case 0:
        {
            print("hello");
            print("hello");
        }
    }
    return 1;
}

004: function «x» is not implemented

Most often caused by a missing brace in the function above.

025: function heading differs from prototype

This usually happen when new sa-mp version comes with new addition of argument to a function, like OnPlayerGiveDamage from 0.3x to 0.3z. The scripter must add «bodypart» argument to OnPlayerGiveDamage callback on their script.

Caused by either the number of arguments or the argument name is different.

Example:

forward MyFunction(playerid);
 
public MyFunction(player, vehicleid)

Fixed:

forward MyFunction(playerid, vehicleid);
 
public MyFunction(playerid, vehicleid)

035: argument type mismatch (argument x)

An argument passed to a function is of the wrong ‘type’.
For example, passing a string where you should be passing an integer.

Example:

error 035: argument type mismatch (argument 1)
Kick("playerid"); // We are passing a STRING, we should be passing an INTEGER

Fixed:

Kick(playerid);

036: empty statement

Caused by a rogue semicolon (;), usually inadvertently placed behind an if-statement.

046: unknown array size (variable x)

For array assignment, the size of both arrays must be explicitly defined, also if they are passed as function arguments.

Example:

new string[];
string = "hello";

Fixed:

new string[6];
string = "hello";

047: array sizes do not match, or destination array is too small

For array assignment, the arrays on the left and the right side of the
assignment operator must have the same number of dimensions.
In addition:

  • for multi-dimensional arrays, both arrays must have the same size;
  • for single arrays with a single dimension, the array on the left side of the assignment operator must have a size that is equal or bigger than the one on the right side.
new destination[8];
new msg[] = "Hello World!";
 
destination = msg;

In the above code, we try to fit 12 characters in an array that can only support 8. By increasing the array size of the destination, we can solve this. Note that a string also requires a null terminator so the total length of «Hello World!» plus the null terminator is, in fact, 13.

new destination[13];
new msg[] = "Hello World!";
 
destination = msg;

055: start of function body without function header

This error usually indicates an erroneously placed semicolon at the end of the function header.

Common Fatal Errors

100: cannot read from file: «<file>»

The compiler cannot find, or read from, the specified file. Make sure that the file you are trying to include is in the proper directory (default: <server directory>pawnoinclude).

Tip

Image:Light_bulb_icon.png

Multiple copies of pawno can lead to this problem. If this is the case, don’t double click on a .pwn file to open it. Open your editor first, then open the file through the editor.

Common Warnings

202: number of arguments does not match definition

The description of this warning is pretty self-explanatory. You’ve passed either too few or too many parameters to a function. This is usually an indication that the function is used incorrectly. Refer to the documentation to figure out the correct usage of the function.

This usually happen on GetPlayerHealth function with PAWNO function auto completion as it confuses with the NPC GetPlayerHealth function that only has ‘playerid’ argument.

Example:

GetPlayerHealth(playerid);

Fixed:

new Float:health;
GetPlayerHealth(playerid, health);

203: symbol is never used: «symbol»

You have created a variable or a function, but you’re not using it. Delete the variable or function if you don’t intend to use it. This warning is relatively safe to ignore.

The stock keyword will prevent this warning from being shown, as variables/functions with the stock keyword are not compiled unless they are used.

stock SomeFunction()
{
    // Blah
}
 
// There will be no warning if this function is never used

204: symbol is assigned a value that is never used: «symbol»

Similar to the previous warning. You created a variable and assigned it a value, but you’re not using that value anywhere. Use the variable, or delete it. This warning, too, is relatively safe to ignore.

209: function should return a value

You have created a function without a return value

SomeFunction()
{
     // Blah
}

but you used it to assign on variable or function argument,

new result = SomeFunction(); // expected value = 1

Fixed:

SomeFunction()
{
     // Blah
     return 1;
}

211: possibly unintended assignment

The assignment operator (=) was found in an if-statement, instead of the equality operator (==). If the assignment is intended, the expression must be wrapped in parentheses. Example:

if(vehicle = GetPlayerVehicleID(playerid)) // warning
if(vehicle == GetPlayerVehicleID(playerid)) // no warning
if((vehicle = GetPlayerVehicleID(playerid))) // no warning; the value returned by the function will be assigned to the variable and the expression is then evaluated.

213: tag mismatch

A tag mismatch occurs when:

  • Assigning to a tagged variable a value that is untagged or that has a different tag
  • The expressions on either side of a binary operator have different tags
  • In a function call, passing an argument that is untagged or that has a different tag than what the function argument was defined with
  • Indexing an array which requires a tagged index with no tag or a wrong tag name

Usually happen on a new variable created with missing tag on the required function such as Float:, Text3D:, Text:, etc. Example,

Bad:

new health;
GetPlayerHealth(playerid, health);

Good:

new Float:health;
GetPlayerHealth(playerid, health);

217: loose indentation

The compiler will issue this warning if the code indentation is ‘loose’, example:

Good:

if(condition)
{
    action();
    result();
}

Bad:

if(condition)
{
    action();
  result();
}

Indentation means to push (indent) text along from the left of the page (by pressing the TAB key). This is common practice in programming to make code easier to read.
This warning also exists to avoid dangling-else problem.

219: local variable «foo» shadows a variable at a preceding level

A local variable, i.e. a variable that is created within a function or callback, cannot have the same name as a global variable, an enum specifier, a function, or a variable declared higher up in the same function. The compiler cannot tell which variable you’re trying to alter.

It is customary to prefix global variables with ‘g’ (e.g. gTeam). However, global variables should be avoided where possible.

new team[MAX_PLAYERS]; // variable declared in the global scape
 
function(playerid)
{
    new team[MAX_PLAYERS]; // declared in the local scope, shadows the variable in the global scope, warning 219
    team[playerid] = random(5); // which variable are we trying to update here?
}

225: unreachable code

The indicated code will never run, because an instruction before (above) it causes a jump out of the function, out of a loop or elsewhere. Look for return, break, continue and goto instructions above the indicated line. Unreachable code can also be caused by an endless loop above the indicated line.

Example:

CMD:jetpack(playerid, params[])
{
	#pragma unused params
	if(IsPlayerAdmin(playerid))
	{
	    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
	    return 1; // jumps out the command
	}
	else
	{
	    SendClientMessage(playerid, -1, "You are not admin!");
	    return 1; // jumps out the command
	}
	SendClientMessage(playerid, -1, "You typed command /jp"); // this code is not reachable and will not run.
}

Fixed:

CMD:jetpack(playerid, params[])
{
	#pragma unused params
	if(IsPlayerAdmin(playerid))
	{
	    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
	}
	else
	{
	    SendClientMessage(playerid, -1, "You are not admin!");
	}
	SendClientMessage(playerid, -1, "You typed command /jp"); // this code will run.
	return 1; // jumps out the command
}

235: public function lacks forward declaration (symbol «symbol»)

Your public function is missing a forward declaration.

Bad:

public MyFunction()
{
    // blah
}

Good:

forward MyFunction();
 
public MyFunction()
{
    // blah
}

External Links

  • pawn-lang.pdf
Lands Rp :: Скриптинг :: Уроки
  Перейти вниз 
Автор Сообщение
pasvitas
Admin
Сообщения : 30
Дата регистрации : 2012-11-18
Возраст : 25
Откуда : Вологда

ID ошибки в pawno Empty
СообщениеТема: ID ошибки в pawno   ID ошибки в pawno Icon_minitimeСб Ноя 24, 2012 12:37 pm

Если при компиляции у вас выдает ошибки — ищите ответ тут. Вот полный список ошибок

Спойлер:

Также пишите сюда свои ошибки, мы постараемся вам помочь их исправить!

Вернуться к началу Перейти вниз
 

ID ошибки в pawno

Вернуться к началу 
Страница 1 из 1

 Похожие темы

-
» Pawno Helper 1.3
Права доступа к этому форуму: Вы не можете отвечать на сообщения
Lands Rp :: Скриптинг :: Уроки -
Перейти:  

Pawno-Info.Ru — Портал о программировании №1

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Программы для скриптера

Подборка удобных программ для скриптера

  • Уважаемый Гость.
    — Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    — После решения Вашего вопроса (проблемы) — нажмите «Лучший ответ», на сообщении, которое его решило. За игнорирование этого действия — Вы получите соответствующее предупреждение. Мы — стараемся Вам помочь. Уделите 10 секунд — чтобы нажать кнопку. (Если у Вас нет такой возможности — укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    — Cоздавать темы с названиями «Помогите», «Плиз», «Ошибка», «Не могу найти», «Хелп» и тому подобное;
    — Cоздавать темы без детального описания того, что нужно исправить.
    — Cоздавать темы из одного скриншота.
    За игнор правил форума — Ваша тема будет удалена, а Вы получите системное предупреждение.

Статус
В этой теме нельзя размещать новые ответы.

Djon_Brain

Регистрация
17 Янв 2012
Сообщения
3,658
Лучшие ответы
2
Репутация
530
  • #1

Добрый день Уважаемые пользователи портала. Все, особенно начинающие «скриптеры» сталкиваются c error‘ми и warning‘ами. Ниже представленны все ошибки при компиляции с которыми вы можете столкнуться и что они обозначают.

ID ошибок

PHP:

error 001: expected token: "%s", but found "%s" - ожидался символ: "%s", но был найден "%s";
error 002: only a single statement (or expression) can follow each "case" - только одно заявление (или выражение) могут следовать за "case";
error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;
error 004: function "%s" is not implemented - функция %s не реализована;
error 005: function may not have arguments - функция не имеет аргументов;
error 006: must be assigned to an array - должен быть присвоен массив;
error 007: operator cannot be redefined - оператор не может быть установлен еще раз;
error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;
error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);
error 010: invalid function or declaration - неизвестная функция или декларация;
error 011: invalid outside functions - неверно вне функции;
error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;
error 013: no entry point (no public functions) - нет точки входа (не public функция);
error 014: invalid statement; not in switch - неверный оператор; не в switch;
error 015: "default" case must be the last case in switch statement - "default" должен быть последним условием в switch;
error 016: multiple defaults in "switch" - несколько "default" в switch;
error 017: undefined symbol "%s" - неизвестный символ "%s";
error 018: initialization data exceeds declared size - данные массива превышают его размер;
error 019: not a label: %s" - не метка "%s";
error 020: invalid symbol name "%s" - неверное имя символа "%s";
error 021: symbol already defined: %s" - символ уже объявлен: "%s";
error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);
error 023: array assignment must be simple assignment - назначение массива должно быть простым;
error 024: "break" or "continue" is out of context - "break" или "continue" вне контекста;
error 025: function heading differs from prototype - функция заголовка отличается от прототипа;
error 026: no matching "#if..." - не найдено "#if...";
error 027: invalid character constant - недопустимый символ в постоянной;
error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";
error 029: invalid expression, assumed zero - неверное выражение, нет результата;
error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;
error 031: unknown directive - неизвестная директива;
error 032: array index out of bounds (variable "%s") - индекс массива превышен;
error 033: array must be indexed (variable "%s") - массив должен быть проиндексирован;
error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);
error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);
error 036: empty statement - пустой оператор;
error 037: invalid string (possibly non-terminated string) - неправильная строка;
error 038: extra characters on line - лишние символы в строке;
error 039: constant symbol has no size - символьная константа не имеет размера;
error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;
error 041: invalid ellipsis, array size is not known - размер массива неизвестен;
error 042: invalid combination of class specifiers - недопустимое сочетание класса;
error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;
error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;
error 045: too many function arguments - слишком много аргументов у функции;
error 046: unknown array size (variable "%s") - неизвестный размер массива;
error 047: array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;
error 048: array dimensions do not match - размеры массива не совпадают;
error 049: invalid line continuation - неправильное продолжение строки;
error 050: invalid range - неверный диапазон;
error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";
error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;
error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;
error 054: unmatched closing brace - не найдена закрывающаяся скобка;
error 055: start of function body without function header - начало функции без заголовка;
error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть общедоступными;
error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;
error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;
error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;
error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";
error 061: "#elseif" directive follows an "#else" directive - "#else" перед "#elseif";
error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;
error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;
error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;
error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;
error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;
error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;
error 068: invalid rational number precision in #pragma - неверное число в #pragma;
error 069: rational number format already defined - формат рационального числа уже определен;
error 070: rational number support was not enabled - рациональное число не поддерживается;
error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;
error 072: "sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;
error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;
error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;
error 075: input line too long (after substitutions - введенная строка слишком длинная;
error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;
error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;
error 078: function uses both "return" and "return <value>" - функция использует "return" и "return <значение>";
error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;
error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;
error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;
error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;
error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;
error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;
error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";
error 086: unknown automaton "%s" - неизвестная автоматизация "%s";
error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";
error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;

PHP:

fatal error 100: cannot read from file: "%s" - невозможно прочитать из файла "%s";
fatal error 107: too many error messages on one line - слишком много сообщений об ошибке в одной строке;

PHP:

warning 200: symbol "%s" is truncated to 31 characters - название переменной "%s" обрезано до 31 символа;
warning 201: redefinition of constant/macro (symbol "%s") - повторно установлена постоянная/макро (переменная "%s");
warning 202: number of arguments does not match definition - несовпадение количества аргументов;
warning 203: symbol is never used: "%s" - переменная никогда не использовалась: "%s";
warning 204: symbol is assigned a value that is never used: "%s" - переменной установлено значение которое никогда не использовалось: "%s".
warning 208: function with tag result used before definition, forcing reparse - функция с результатом тега используется перед определением, заставляя повторный анализ
warning 209: function "%s" should return a value - функция "%s" ничего не возвращает;
warning 211: possibly unintended assignment - в условии использовано не сравнение, а присвоение;
warning 213: tag mismatch - несоответствие аргументов;
warning 215: expression has no effect - выражение не имеет смысла;
warning 216: nested comment - вложенный комментарий (вынесите его за функцию);
warning 217: loose indentation - не выровненная строка;
warning 219: local variable "%s" shadows a variable at a preceding level - локальная переменная "%s" встречается на предыдущем уровне;
warning 224: indeterminate array size in "sizeof" expression (symbol "%s") - неопределенный размер массива в "sizeof" выражении (переменная "%s");
warning 225: unreachable code - невыполнимый код;
warning 227: more initiallers than enum fields - больше инициализаторов, чем полей перечисления;
warning 235: public function lacks forward declaration (symbol "%s") - у public функции отсутствует forward (символ "%s");

Так же: Добавлю ссылку на Wiki: >> Кликабельно <<

Последнее редактирование модератором: 25 Июн 2022

Статус
В этой теме нельзя размещать новые ответы.

Приветствую в данной теме выложены варнингы/ошибки/eror в павно SA:MP

               ID ОШИБОК:
 

error 001: expected token: "%s", but found "%s" - поставленный символ не имеет значения

error 002: only a single statement (or expression) can follow each "case" - больше одного заявление было поставлено на 1 case

error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;

error 004: function "%s" is not implemented - функция %s не реализована;

error 005: function may not have arguments - функция не имеет аргументов;

error 006: must be assigned to an array - должен быть присвоен массив;

error 007operator cannot be redefined - оператор не может быть установлен еще раз;

error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;

error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);

error 010: invalid function or declaration - неизвестная функция или декларация;

error 011: invalid outside functions - неверно вне функции;

error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;

error 013: no entry point (no public functions) - нет точки входа (не public функция);

error 014: invalid statement; not in switch - неверный оператор; не в switch;

error 015"default" case must be the last case in switch statement - "default" должен быть последним условием в switch;

error 016: multiple defaults in "switch" - несколько "default" в switch;

error 017: undefined symbol "%s" - неизвестный символ "%s";

error 018: initialization data exceeds declared size - данные массива превышают его размер;

error 019: not a label: %s" - не метка "%s";

error 020: invalid symbol name "%s" - неверное имя символа "%s";

error 021: symbol already defined: %s" - символ уже объявлен: "%s";

error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);

error 023array assignment must be simple assignment - назначение массива должно быть простым;

error 024"break" or "continue" is out of context - "break" или "continue" вне контекста;

error 025: function heading differs from prototype - функция заголовка отличается от прототипа;

error 026: no matching "#if..." - не найдено "#if...";

error 027: invalid character constant - недопустимый символ в постоянной;

error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";

error 029: invalid expression, assumed zero - неверное выражение, нет результата;

error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;

error 031: unknown directive - неизвестная директива;

error 032array index out of bounds (variable "%s") - индекс массива превышен;

error 033array must be indexed (variable "%s") - массив должен быть проиндексирован;

error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);

error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);

error 036: empty statement - пустой оператор;

error 037: invalid string (possibly non-terminated string) - неправильная строка;

error 038: extra characters on line - лишние символы в строке;

error 039: constant symbol has no size - символьная константа не имеет размера;

error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;

error 041: invalid ellipsis, array size is not known - размер массива неизвестен;

error 042: invalid combination of class specifiers - недопустимое сочетание класса;

error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;

error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;

error 045: too many function arguments - слишком много аргументов у функции;

error 046: unknown array size (variable "%s") - неизвестный размер массива;

error 047array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;

error 048array dimensions do not match - размеры массива не совпадают;

error 049: invalid line continuation - неправильное продолжение строки;

error 050: invalid range - неверный диапазон;

error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";

error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;

error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;

error 054: unmatched closing brace - не найдена закрывающаяся скобка;

error 055: start of function body without function header - начало функции без заголовка;

error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть

общедоступными;

error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;

error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;

error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;

error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";

error 061"#elseif" directive follows an "#else" directive - "#else" перед "#elseif";

error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;

error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;

error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;

error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;

error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;

error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;

error 068: invalid rational number precision in #pragma - неверное число в #pragma;

error 069: rational number format already defined - формат рационального числа уже определен;

error 070: rational number support was not enabled - рациональное число не поддерживается;

error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;

error 072"sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;

error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;

error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;

error 075: input line too long (after substitutions - введенная строка слишком длинная;

error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;

error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;

error 078: function uses both "return" and "return " - функция использует "return" и "return <значение>";

error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;

error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;

error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;

error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;

error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;

error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;

error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";

error 086: unknown automaton "%s" - неизвестная автоматизация "%s";

error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";

error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;

                       ID OST WARNING :

fatal error 100: cannot read from file: "%s" - невозможно прочитать из файла "%s";

fatal error 107: too many error messages on one line - слишком много сообщений об ошибке в одной строке;

             WARNING:

warning 200: symbol "%s" is truncated to 31 characters - название переменной "%s" обрезано до 31 символа;

warning 201: redefinition of constant/macro (symbol "%s") - повторно установлена постоянная/макро (переменная "%s");

warning 202: number of arguments does not match definition - несовпадение количества аргументов;

warning 203: symbol is never used: "%s" - переменная никогда не использовалась: "%s";

warning 204: symbol is assigned a value that is never used: "%s" - переменной установлено значение которое никогда не использовалось: "%s".

warning 208: function with tag result used before definition, forcing reparse - функция с результатом тега используется перед определением, заставляя повторный анализ

warning 209: function "%s" should return a value - функция "%s" ничего не возвращает;

warning 211: possibly unintended assignment - в условии использовано не сравнение, а присвоение;

warning 213: tag mismatch - несоответствие аргументов;

warning 215: expression has no effect - выражение не имеет смысла;

warning 216: nested comment - вложенный комментарий (вынесите его за функцию);

warning 217: loose indentation - не выровненная строка;

warning 219: local variable "%s" shadows a variable at a preceding level - локальная переменная "%s" встречается на предыдущем уровне;

warning 224: indeterminate array size in "sizeof" expression (symbol "%s") - неопределенный размер массива в "sizeof" выражении (переменная "%s");

warning 225: unreachable code - невыполнимый код;

warning 227: more initiallers than enum fields - больше инициализаторов, чем полей перечисления;

warning 235public function lacks forward declaration (symbol "%s") - у public функции отсутствует forward (символ "%s");

                                     Найдешь новый варнинг? скидывай сюда или в лс death111!

Предупреждаю! Не называйте копированием, это просто можно считать перенос темы с сайта на сайт! Не считая дополнения варнингов!

                                                                                                    Авторские права(Этой темы): ТЫК                                                
 

Заметка от

DEST
, создано 10 января, 2022

Такая тема уже есть в разделе «Проблемы с компиляцией». Она не относится к SAMP, она относится к PAWN.

Заметка от

DEST
, создано 10 января, 2022

2.5. Запрещено дублировать контент. Если такая тема и/или похожая уже имеется на форуме, то автор темы-копии будет предупрежден, а тема будет удалена безвозвратно. 

Устное предупреждение.

Список часто встречаемых ошибок в pawno

Данная тема содержет наиболее распространенные ошибки и предупреждения в pawno при создании скриптов sa-mp
Когда компилятор находит ошибку в файле, то выводится сообщение, в таком порядке:

  • Имя файла
  • номер строки компилятора были обнаружены ошибки в скобках, непосредственно за именем
  • класс error (ошибка, фатальная ошибка или предупреждение)
  • номер ошибки
  • описание ошибки

Например:

hello.pwn(3) : error 001: expected token: ";", but found "{"

Примечание: эта ошибка может быть на линии, над линией, что показано, так как компилятор не всегда может установить ошибку перед проанализировав полное выражение.

Категории ошибок

Ошибки разделяются на три класса:

Ошибки (errors)

  • Описание ситуации когда компилятор не может скомпилировать код
  • Ошибки номеруются от 1 до 99

Критические ошибки (Fatal errors)

  • Критические ошибки и описание, от которых компилятор не может восстановиться.
  • Парсинг прерывается (нет отклика программы).
  • Критические ошибки номеруются от 100 до 199.

Предупреждения ( Warings )

  • Предупреждения указывают на возможную причину возникновения багов, вылетов.
  • Предупреждения номеруются от 200 до 299.

Распространенные ошибки

001: expected token (ожидаемый знак)
Обязательный знак отсутствует

Пример:

error 001: expected token: ";", but found "return"
main()
{
    print("test") // тут должна быть точка с запятой ";"
    return 1;
}

002: only a single statement (or expression) can follow each “case” (только одно выражение может быть в одной строке с «case»
В каждом case оператора switch без фигурных скобок может содержаться только один оператор если больше нужно ставить скобки.
Пример:

error 002: only a single statement (or expression) can follow each "case"

main()
{
    switch(x)
    {
        case 0: print("hello"); print("hello");
    }
    return 1;
}

Так же могут быть еще и предупреждения и дополнительные ошибки:

error 002: only a single statement (or expression) can follow each "case"
warning 215: expression has no effect
error 010: invalid function or declaration

Вот так это можно исправить:

main()
{
    switch(x)
    {
        case 0:
        {
            print("hello");
            print("hello");
        }
    }
    return 1;
}

004: function «x» is not implemented (Функция «x» не используется
Часто бывает что в функции выше пропущена скобка.

025: function heading differs from prototype
Это проиходит когда в функции не совпадают аргументы.

К примеру:

forward MyFunction(playerid);
public MyFunction(player, vehicleid);

Исправляем:

forward MyFunction(playerid, vehicleid);
public MyFunction(playerid, vehicleid);

035: argument type mismatch (argument x) (не совпадение типов аргумента(ов)
К примеру когда в место playerid — integer аргумента стоит «playerid» — string или 0.5 — float

Пример:

error 035: argument type mismatch (argument 1)

Kick("playerid"); // Как видите в место целого числа (integer) стоит строка

Исправляем:

Kick(playerid);

046: unknown array size (variable x)
Не указан размер массива.

Пример:

new string[];
string = "pawno";

Исправляем:

new string[6];
string = "pawno";

047: array sizes do not match, or destination array is too small
Размер массива мал или не совпадает.

  • Многомерные массивы должны иметь одинаковый размер
  • Одномерные массив к которому присваивают(правый должен иметь больше размер чем левый.
new destination[8];
new msg[] = "Hello World!";
 
destination = msg;

В приведенном выше коде размер строки «Hello world!» ровна 12 байт а массив к которому присваиваем имеет размер 8 байт из этого и складывается ошибка.
Если увеличить размер массива destination до 13 байт то ошибка исправится.

new destination[13];
new msg[] = "Hello World!";
destination = msg;

055: start of function body without function header
Начало тела функции без функции заголовка.

Критические ошибки (FATAL ERRORS)

100: cannot read from file: "<file>"

Компилятор не может найти или прочитать указанный файл, убедитесь что он находится по адресу (<папка с сервером>pawnoinclude).
Пример:

#include <a_sam>

Исправляем:

#include <a_samp>

Совет
Изображение Не нужно открывать ваш код дважды, не нужно тыкать несколько раз на файл. Откройте сначала редактор, потом ваш проект.

Предупреждения( Warnings )

202: number of arguments does not match definition
Описание ошибки довольно понятное, это значит что вы используете слишком мало или слишком много аргументов в функции, обычно это признак того что функция используется не правильно, обратитесь к документации.
Функция GetPlayerHealth согласно официальному источнику wiki.sa-mp.com имеет два аргумента playerid и Float:health ссылка

Пример:

GetPlayerHealth(playerid);

Исправляем:

new Float:health;
GetPlayerHealth(playerid, health);

203: symbol is never used: «symbol»
Вы создали переменную или функцию и она ни где не используется тогда ищите в окне компилятора это предупреждение, это не как не влияет на код и не угражает ему, так что если вы удалите переменную или функцию которая не используется, то вы сэкономите память.

Пример:

stock SomeFunction()
{
    // Blah
}

204: symbol is assigned a value that is never used: «symbol»
Это предупреждение аналогично к предыдущему, разница в том что к переменной что то присвоено и оно не как не используется, это безопасно :)

209: function should return a value
Функция ничего не возвращает, вы создали её:

SomeFunction()
{
     // Blah
}

Решили её присвоить к чему нибудь к примеру:

new result = SomeFunction(); // ожидает 1

Вот так исправить

SomeFunction()
{
     // Blah
     return 1;
}

211: possibly unintended assignment
Если вы введете оператор присваивания в условии и оно не будет в круглых скобках то будет предупреждение

if(vehicle = GetPlayerVehicleID(playerid)) // ошибка
if(vehicle == GetPlayerVehicleID(playerid)) // все норм
if((vehicle = GetPlayerVehicleID(playerid))) // все норм, так значение функции присвоится к переменной потом выражение вычесляется { то есть это как if(IsPlayerConnected(playerid)}

213: tag mismatch ( несовпадение тегов)
Это происходит когда:

  • Тип переменной указан не верно или не имеет его
  • Выражения по обе стороны бинарного оператора имеют разные теги
  • В пременную возвращен не верный тип переменной или не имеющий его.
  • Индексирование массива, который требует тегами индекс без тега или неправильное имя тега

Часто это бывает на 3d текстах или тексдравах Text3D, Text

Не правильно:

new health;
GetPlayerHealth(playerid, health);

Правильно:

new Float:health;
GetPlayerHealth(playerid, health);

217: loose indentation
Компилятор выдаст ошибку если не соблюдены отступы.

Правильно:

if(condition)
{
    action();
    result();
}

Не правильно:

if(condition)
{
    action();
  result();
}

Отступы делаются по нажатью кнопки TAB это практика в программировании для удобного чтения кода.

219: local variable «foo» shadows a variable at a preceding level
Локальная переменная в тени глобальной то есть над локальной переменной создана точно такая же глобальная. В практике программирования префиксом глобальной переменной является «g» в начале переменной к примеру

new gPlayerMoney

любыми способами избегайте их.

К примеру:

new team[MAX_PLAYERS]; // объявляем глобальную переменную
 
function(playerid)
{
    new team[MAX_PLAYERS]; // создаем еще одну, и получаем статью 219 кодекса ошибок :D
    team[playerid] = random(5); 
}

Решение:
Просто переименуйте локальную переменную team.

225: unreachable code ( недоступный код )
Это происходит тогда когда вы пишите какой нибудь код после return, после return’а код не выполняется и он считается бесполезным

Пример:

#include <zcmd.inc>

CMD:jetpack(playerid, params[])
{
	#pragma unused params
	if(IsPlayerAdmin(playerid))
	{
	    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
	    return 1; // завершаем процесс
	}
	else
	{
	    SendClientMessage(playerid, -1, "Вы не администратор");
	    return 1; // завершаем процесс
	}
	SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // Этот код не доступен он не будет выполнятся.
}

Решение:

CMD:jetpack(playerid, params[])
{
	#pragma unused params
	if(IsPlayerAdmin(playerid))
	{
	    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
	}
	else
	{
	    SendClientMessage(playerid, -1, "Вы не администратор");
	}
	SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // этот код запустится
	return 1; // завершаем процесс
}

235: public function lacks forward declaration (symbol «symbol»)
Отсутствует forward.

Не правильно:

public MyFunction()
{

}

Правильно:

forward MyFunction();
 
public MyFunction()
{

}

Надеюсь эта статья поможет вам в языке программирования, желаю вам не повторять ошибок дважды и что бы ваш код был быстрым, надежным!
Оставляйте ваши отзывы, ставьте плюсы, пишите недостатки ошибки, недостатки статьи или их недочеты. Удачи в мире PAWNO!

error 001
expected token: «%s», but found «%s»
ожидался символ: «%s», но был найден «%s»

error 002
only a single statement (or expression) can follow each «case»
только одно заявление (или выражение) могут следовать за «case»

error 003
declaration of a local variable must appear in a compound block
объявленная локальная переменная должна использоваться в этом же блоке

error 004
function «%s» is not implemented
функция %s не реализована

error 005
function may not have arguments
функция не имеет аргументов

error 006
must be assigned to an array
должен быть присвоен массив

error 007
operator cannot be redefined
оператор не может быть установлен еще раз

error 008
must be a constant expression; assumed zero
должно быть постоянным выражением; равным нулю

error 009
invalid array size (negative or zero)
неверный размер массива (отрицательный или 0)

error 010
invalid function or declaration
неизвестная функция или декларация

error 011
invalid outside functions
неверно вне функции

error 012
invalid function call, not a valid address
неверный вызов функции, неверный адрес

error 013
no entry point (no public functions)
нет точки входа (не public функция)

error 014
invalid statement; not in switch
неверный оператор; не в switch

error 015
default case must be the last case in switch statement
default должен быть последним условием в switch

error 016
multiple defaults in «switch»
несколько «default» в switch

error 017
undefined symbol «%s»
неизвестный символ «%s»

error 018
initialization data exceeds declared size
данные массива превышают его размер

error 019
not a label: «%s»
не метка «%s»

error 020
invalid symbol name «%s»
неверное имя символа «%s»

error 021
symbol already defined: «%s»
символ уже объявлен: «%s»

error 022
must be lvalue (non-constant)
должно быть левосторонним (нет постоянной)

error 023
array assignment must be simple assignment
назначение массива должно быть простым

error 024
break or «continue» is out of context
break или «continue» вне контекста

error 025
function heading differs from prototype
функция заголовка отличается от прототипа

error 026
no matching «#if…»
не найдено «#if…»

error 027
invalid character constant
недопустимый символ в постоянной

error 028
invalid subscript (not an array or too many subscripts): «%s»
неверный индекс (это не массив или слишком много индексов): «%s»

error 029
invalid expression, assumed zero
неверное выражение, нет результата

error 030
compound statement not closed at the end of file
составной оператор не закрыт в конце файла

error 031
unknown directive
неизвестная директива

error 032
array index out of bounds (variable «%s»)
индекс массива превышен

error 033
array must be indexed (variable «%s»)
массив должен быть проиндексирован

error 034
argument does not have a default value (argument %d)
аргумент не имеет начального значения (аргумент %d)

error 035
argument type mismatch (argument %d)
несоответствие типа аргумента (аргумент %d)

error 036
empty statement
пустой оператор

error 037
invalid string (possibly non-terminated string)
неправильная строка

error 038
extra characters on line
лишние символы в строке

error 039
constant symbol has no size
символьная константа не имеет размера

error 040
duplicate «case» label (value %d)
несколько раз объявлен «case» с одним тем же параметром

error 041
invalid ellipsis, array size is not known
размер массива неизвестен

error 042
invalid combination of class specifiers
недопустимое сочетание класса

error 043
character constant exceeds range for packed string
символьная константа превышает размер строки

error 044
positional parameters must precede all named parameters
позиционные параметры должны предшествовать всем именованным параметрам

error 045
too many function arguments
слишком много аргументов у функции

error 046
unknown array size (variable «%s»)
неизвестный размер массива

error 047
array sizes do not match, or destination array is too small
размеры массива конфликтуют, либо целевой массив слишком маленький

error 048
array dimensions do not match
размеры массива не совпадают

error 049
invalid line continuation
неправильное продолжение строки

error 050
invalid range
неверный диапазон

error 051
invalid subscript, use «[ ]» operators on major dimensions
неправильный индекс, используйте «[]»

error 052
multi-dimensional arrays must be fully initialized
много-размерные массивы должны быть полностью определены

error 053
exceeding maximum number of dimensions
превышение максимального числа измерений

error 054
unmatched closing brace
не найдена закрывающаяся скобка

error 055
start of function body without function header
начало функции без заголовка

error 056
arrays, local variables and function arguments cannot be public (variable «%s»)
массивы, локальные переменные и аргументы функции не могут быть общедоступными (переменная «% s»)

error 057
unfinished expression before compiler directive
который недействителен.

error 058
duplicate argument; same argument is passed twice
дублирование аргумента; аргумент передается несколько раз

error 059
function argument may not have a default value (variable «%s»)
аргумент не может иметь значение по-умолчанию

error 060
multiple «#else» directives between «#if … #endif»
несколько «#else» между «#if и #endif»

error 061
#elseif directive follows an «#else» directive
#else перед «#elseif»

error 062
number of operands does not fit the operator
Количество операторов не соотвествует оператору

error 063
function result tag of operator «%s» must be «%s»
Результат функции %s должен быть %s

error 064
cannot change predefined operators
невозможно изменить уже определенные операторы

error 065
function argument may only have a single tag (argument %d)
в этой функции может быть только один аргумент

error 066
function argument may not be a reference argument or an array (argument «%s»)
аргумент функции не может быть ссылкой или массивом

error 067
variable cannot be both a reference and an array (variable «%s»)
Переменная не может быть как массив или ссылка

error 068
invalid rational number precision in #pragma
неверное число в #pragma

error 069
rational number format already defined
формат рационального числа уже определен

error 070
rational number support was not enabled
рациональное число не поддерживается

error 071
user-defined operator must be declared before use (function «%s»)
объявленный оператор должен быть перед использованием

error 072
sizeof operator is invalid on «function» symbols
оператор «sizeof» не может быть использован для символов функции

error 073
function argument must be an array (argument «%s»)
аргумент %s должен быть массивом

error 074
#define pattern must start with an alphabetic character
#define должен начинаться с буквы

error 075
input line too long (after substitutions)
введенная строка слишком длинная

error 076
syntax error in the expression, or invalid function call
неправильный синтаксис или неправильный вызов функции

error 077
malformed UTF-8 encoding, or corrupted file: %s
плохая кодировка UTF-8 или плохой файл: %s

error 078
«»}»>function uses both «return» and «return <value>»
«»}»>функция использует «return» и «return <значение>»

error 079
inconsistent return types (array & non-array)
несовместимость типов возвращенных результатов

error 080
unknown symbol, or not a constant symbol (symbol «%s»)
неизвестный или непостоянный символ: %s

error 081
cannot take a tag as a default value for an indexed array parameter (symbol «%s»)
Нельзя взять значение в массив %s

error 082
user-defined operators and native functions may not have states
созданные функции или операторы не имеют состояния

error 083
a function may only belong to a single automaton (symbol «%s»)
функция может принадлежать только к одной автоматизации

error 084
state conflict: one of the states is already assigned to another implementation (symbol «%s»)
для функции %s уже определенна данная state

error 085
no states are defined for function «%s»
нет состояний, определенных для функции «%s»

error 086
unknown automaton «%s»
неизвестная автоматизация «%s»

error 087
unknown state «%s» for automaton «%s»
неизвестное состояние «%s» в автоматизации «%s»

error 088
number of arguments does not match definitionn
количество аргументов не совпадает с объявленными в функции

Ошибки в программировании – дело обычное, хоть и неприятное. В данной статье будет рассказано о том, какими бывают ошибки (баги), а также что собой представляют исключения.

Определение

Ошибка в программировании (или так называемый баг) – это ситуация у разработчиков, при которой определенный код вследствие обработки выдает неверный результат. Причин данному явлению множество: неисправность компилятора, сбои интерфейса, неточности и нарушения в программном коде.

Баги обнаруживаются чаще всего в момент отладки или бета-тестирования. Реже – после итогового релиза готовой программы. Вот несколько вариантов багов:

  1. Появляется сообщение об ошибке, но приложение продолжает функционировать.
  2. ПО вылетает или зависает. Никаких предупреждений или предпосылок этому не было. Процедура осуществляется неожиданно для пользователя. Возможен вариант, при котором контент перезапускается самостоятельно и непредсказуемо.
  3. Одно из событий, описанных ранее, сопровождается отправкой отчетов разработчикам.

Ошибки в программах могут привести соответствующее приложение в негодность, а также к непредсказуемым алгоритмам функционирования. Желательно обнаруживать баги на этапе ранней разработки или тестирования. Лишь в этом случае программист сможет оперативно и относительно недорого внести необходимые изменения в код для отладки ПО.

История происхождения термина

Баг – слово, которое используется разработчиками в качестве сленга. Оно произошло от слова «bug» – «жук». Точно неизвестно, откуда в программировании и IT возник соответствующий термин. Существуют две теории:

  1. 9 сентября 1945 года ученые из Гарварда тестировали очередную вычислительную машину. Она называлась Mark II Aiken Relay Calculator. Устройство начало работать с ошибками. Когда его разобрали, то ученые заметили мотылька, застрявшего между реле. Тогда некая Грейс Хоппер назвала произошедший сбой упомянутым термином.
  2. Слово «баг» появилось задолго до появления Mark II. Термин использовался Томасом Эдисоном и указывал на мелкие недочеты и трудности. Во время Второй Мировой войны «bugs» называли проблемы с радарной электроникой.

Второй вариант кажется более реалистичным. Это факт, который подтвержден документально. Со временем научились различать различные типы багов в IT. Далее они будут рассмотрены более подробно.

Как классифицируют

Ошибки работы программ разделяются по разным факторам. Классификация у рядовых пользователей и разработчиков различается. То, что для первых – «просто программа вылетела» или «глючит», для вторых – огромная головная боль. Но существует и общепринятая классификация ошибок. Пример – по критичности:

  1. Серьезные неполадки. Это нарушения работоспособности приложения, которые могут приводить к непредвиденным крупным изменениям.
  2. Незначительные ошибки в программах. Чаще всего не оказывают серьезного воздействия на функциональность ПО.
  3. Showstopper. Критические проблемы в приложении или аппаратном обеспечении. Приводят к выходу программы из строя почти всегда. Для примера можно взять любое клиент-серверное приложение, в котором не получается авторизоваться через логин и пароль.

Последний вариант требует особого внимания со стороны программистов. Их стараются обнаружить и устранить в первую очередь. Критические ошибки могут отложить релиз исходной программы на неопределенный срок.

Также существуют различные виды сбоев в плане частоты проявления: постоянные и «разовые». Вторые встречаются редко, чаще – при определенных настройках и действиях со стороны пользователя. Первые появляются независимо от используемой платформы и выполненных клиентом манипуляций.

Иногда может получиться так, что ошибка возникает только на устройстве конкретного пользователя. В данном случае устранение неполадки требует индивидуального подхода. Иногда – полной замены компьютера. Связано это с тем, что никто не будет редактировать исходный код, когда он «глючит» только у одного пользователя.

Виды

Существуют различные типы ошибок в программах в зависимости от типовых условий использования приложений. Пример – сбои, которые возникают при возрастании нагрузки на оперативную память или центральный процессор устройства. Есть баги граничных условий, сбоя идентификаторов, несовместимости с архитектурой процессора (наиболее распространенная проблема на мобильных устройствах).

Разработчики выделяют следующие типы ошибок по уровню сложности:

  1. «Борбаг» – «стабильная» неполадка. Она легко обнаруживается на этапе разработки и компилирования. Иногда – во время тестирования наработкой исходной программы.
  2. «Гейзенбаг» – баги с поддержкой изменения свойств, включая зависимость от среды, в которой было запущено приложение. Сюда относят периодические неполадки в программах. Они могут исчезать на некоторое время, но через какой-то промежуток вновь дают о себе знать.
  3. «Мандельбаг» – непредвиденные ошибки. Обладают энтропийным поведением. Предсказать, к чему они приведут, практически невозможно.
  4. «Шрединбаг» – критические неполадки. Приводят к тому, что злоумышленники могут взломать программу. Данный тип ошибок обнаружить достаточно трудно, потому что они никак себя не проявляют.

Также есть классификация «по критичности». Тут всего два варианта – warning («варнинги») и критические весомые сбои. Первые сопровождаются характерными сообщениями и отчетами для разработчиков. Они не представляют серьезной опасности для работоспособности приложения. При компилировании такие сбои легко исправляются. В отдельных случаях компилятор справляется с этой задачей самостоятельно. А вот критические весомые сбои говорят сами за себя. Они приводят к серьезным нарушениям ПО. Исправляются обычно путем проработки логики и значительных изменений программного кода.

Типы багов

Ошибки в программах бывают:

  • логическими;
  • синтаксическими;
  • взаимодействия;
  • компиляционные;
  • ресурсные;
  • арифметические;
  • среды выполнения.

Это – основная классификация сбоев в приложениях и операционных системах. Логические, синтаксические и «среды выполнения» встречаются в разработке чаще остальных. На них будет сделан основной акцент.

Ошибки синтаксиса

Синтаксические баги распространены среди новичков. Они относятся к категории «самых безобидных». С данной категорией ошибок способны справиться компиляторы тех или иных языков. Соответствующие инструменты показывают, где допущена неточность. Остается лишь понять, как исправить ее.

Синтаксические ошибки – ошибки синтаксиса, правил языка. Вот пример в Паскале:

Код написан неверно. Согласно действующим синтаксическим нормам, в Pascal в первой строчке нужно в конце поставить точку с запятой.

Логические

Тут стоит выделить обычные и арифметические типы. Вторые возникают, когда программе при работе необходимо вычислить много переменных, но на каком-то этапе расчетов возникают неполадки или нечто непредвиденное. Пример – получение в результатах «бесконечности».

Логические сбои обычного типа – самые сложные и неприятные. Их тяжелее всего обнаружить и исправить. С точки зрения языка программа может быть написана идеально, но работать неправильно. Подобное явление – следствие логической ошибки. Компиляторы их не обнаруживают.

Выше – пример логической ошибки в программе. Тут:

  1. Происходит сравнение значения i с 15.
  2. На экран выводится сообщение, если I = 15.
  3. В заданном цикле i не будет равно 15. Связано это с диапазоном значений – от 1 до 10.

Может показаться, что ошибка безобидная. В приведенном примере так и есть, но в более крупных программах такое явление приводит к серьезным последствиям.

Время выполнения

Run-time сбои – это ошибка времени выполнения программы. Встречается даже когда исходный код лишен логических и синтаксических ошибок. Связаны такие неполадки с ходом выполнения программного продукта. Пример – в процессе функционирования ПО был удален файл, считываемый программой. Если игнорировать подобные неполадки, можно столкнуться с аварийным завершением работы контента.

Самый распространенный пример в данной категории – это неожиданное деление на ноль. Предложенный фрагмент кода с точки зрения синтаксиса и логики написан грамотно. Но, если клиент наберет 0, произойдет сбой системы.

Компиляционный тип

Встречается при разработке на языках высокого уровня. Во время преобразований в машинный тип «что-то идет не так». Причиной служат синтаксические ошибки или сбои непосредственно в компиляторе.

Наличие подобных неполадок делает бета-тестирование невозможным. Компиляционные ошибки устраняются при разработке-отладке.

Ресурсные

Ресурсный тип ошибок – это сбои вроде «переполнение буфера» или «нехватка памяти». Тесно связаны с «железом» устройства. Могут быть вызваны действиями пользователя. Пример – запуск «свежих» игр на стареньких компьютерах.

Исправить ситуацию помогают основательные работы над исходным кодом. А именно – полное переписывание программы или «проблемного» фрагмента.

Взаимодействие

Подразумевается взаимодействие с аппаратным или программным окружением. Пример – ошибка при использовании веб-протоколов. Это приведет к тому, что облачный сервис не будет нормально функционировать. При постоянном возникновении соответствующей неполадки остается один путь – полностью переписывать «проблемный» участок кода, ответственный за соответствующий баг.

Исключения и как избежать багов

Исключение – событие, при возникновении которых начинается «неправильное» поведение программы. Механизм, необходимый для стабилизации обработки неполадок независимо от типа ПО, платформ и иных условий. Помогают разрабатывать единые концепции ответа на баги со стороны операционной системы или контента.

Исключения бывают:

  1. Программными. Они генерируются приложением или ОС.
  2. Аппаратными. Создаются процессором. Пример – обращение к невыделенной памяти.

Исключения нужны для охвата критических багов. Избежать неполадок помогут отладчики на этапе разработки. А еще – своевременное поэтапное тестирование программы.

P. S. Большой выбор курсов по тестированию есть и в Otus. Присутствуют варианты как для продвинутых, так и для начинающих пользователей.

#Руководства

  • 30 июн 2020

  • 14

Что такое баги, ворнинги и исключения в программировании

Разбираемся, какие бывают типы ошибок в программировании и как с ними справляться.

 vlada_maestro / shutterstock

Евгений Кучерявый

Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Многим известно слово баг (англ. bug — жук), которым называют ошибки в программах. Однако баг — это не совсем ошибка, а скорее неожиданный результат работы. Также есть и другие термины: ворнинг, исключение, утечка.

В этой статье мы на примере C++ разберём, что же значат все эти слова и как эти проблемы влияют на эффективность программы.

Словом «ошибка» (англ. error) можно описать любую проблему, но чаще всего под ним подразумевают синтаксическую ошибку некорректно написанный код, который даже не скомпилируется:

//В конце команды забыли поставить точку с запятой (;)
int a = 5

Компилятор тут же скажет, что в коде ошибка и скорее всего не хватает запятой или точки с запятой.

Также существуют ворнинги (англ. warning предупреждение). Они не являются ошибками, поэтому программа всё равно будет собрана. Вот пример:

int main()
{
   //Мы создаём две переменные, которые просто занимают память и никак не используются
   int a, b;
}

Мы можем попросить компилятор показать нам все предупреждения с помощью флага -Wall:

Предупреждения не являются чем-то критичным, но могут иметь негативные последствия. Например, ваша программа будет использовать больше памяти, чем должна. Так как C++ нужен в том числе и для разработки высоконагруженных систем, этого допускать нельзя.

После восклицательного знака в треугольнике количество предупреждений

Третий вид ошибок — ошибки сегментации (англ. segmentation fault, сокр. segfault, жарг. сегфолт). Они возникают, если программа пытается записать что-то в ячейку, недоступную для записи. Например:

//Создаём константный массив символов 
const char * s = "Hello World";
//Если мы попытаемся перезаписать значение константы, компилятор выдаст ошибку
//Но с помощью указателей мы можем обойти её, поэтому программа успешно скомпилируется
//Однако во время работы она будет выдавать ошибку сегментации
* (char *) s = 'H';

Вот результат работы такого кода:

Мы выяснили, что баг — это не совсем ошибка, а скорее неожиданное поведение программы или результат такого поведения. Баги могут быть чем-то забавным или неприятным. Например, как в играх:

Но они могут привести и к более серьёзным последствиям. Если неправильно спроектировать работу многопоточного приложения, то потоки будут постоянно опережать друг друга. Например, сообщение об ошибке из одного потока может опоздать на миллисекунду, из-за чего второй поток подумает, что никакой ошибки не было, и продолжит работу.

Если ваш код приводит в действие какое-нибудь потенциально опасное устройство, то ценой такой ошибки может быть чья-нибудь жизнь. Такое случилось с кодом для аппарата лучевой терапии Therac-25 — как минимум два человека умерло и ещё больше пострадали из-за превышения дозы радиации.

Также во время работы программы могут возникать ситуации, которые мешают корректной работе программы. Например, если вы просите пользователя ввести число, а он вводит строку.

Конвертировать введённое значение не всегда возможно, поэтому функция, которая занимается преобразованием, «выбрасывает» исключение (англ. exception). Это специальное сообщение говорит о том, что что-то идёт не так.

Если разработчик не описывает логику работы программы при вы выбрасывании исключения, то программа аварийно закрывается. Подробнее мы рассказали об этом в статье про ввод и конвертацию в C++.

Одно из самых известных исключений — переполнение стека (англ. stack overflow). В честь него даже назвали сайт, на котором программисты ищут помощь в решении своих проблем.

int main()
{
   //Бесконечная рекурсия - одна из причин переполнения стека вызовов
   main();
}

Компилятор C++ при этом может выдать ошибку сегментации, а не сообщение о переполнении стека:

Вот аналогичный код на языке C#:

class Program
{
   static void Main(string[] args)
   {
       Main(args);
   }
}

Однако сообщение в этот раз более конкретное:

В обоих случаях программа завершается, потому что не может дальше корректно работать.

Похожая ситуация — переполнение буфера (англ. buffer overflow). Она происходит, когда записываемое значение больше выделенной области в памяти.

//Пробуем записать в переменную типа int значение, которое превышает лимит
//Константа INT_MAX находится в библиотеке climits
int a = INT_MAX + 1;

Обратите внимание, что мы получили предупреждение об арифметическом переполнении (англ. integer overflow):

Тем не менее программа скомпилировалась. Если же такая ситуация возникнет во время вычислений, то мы можем не получить предупреждения.

Арифметическое переполнение стало причиной одной из самых дорогих аварий, произошедших из-за ошибки в коде. В 1996 году ракета-носитель «Ариан-5» взорвалась на 40-й секунде полёта — потери оценивают в 360–500 миллионов долларов.

К сожалению, вручную всё это заметить и исправить не получится. Однако существуют различные инструменты и технологии, которые могут помочь.

Один из таких инструментов — отладчик. Он помогает контролировать ход работы программы, чтобы отслеживать разные показатели.

Второй, более эффективный метод — unit-тесты. Они представляют из себя набор описанных ситуаций для каждого компонента программы с указанием ожидаемого поведения.

Например, у вас есть функция sum (int a, int b), которая возвращает сумму двух чисел. Вы можете написать unit-тесты, чтобы проверять следующие ситуации:

Входные данные Ожидаемый результат
5, 10 15
99, 99 198
8, -9 -1
-1, -1 -2
fff, 8 IllegalArgumentException

Если какой-то из этих тестов не пройден, вы узнаете об этом и сможете всё исправить. Это намного быстрее, чем проверять всё вручную.

Ошибок существует слишком много. При этом самые опасные тяжелее обнаружить, что только усугубляет ситуацию.

Научитесь: Профессия Разработчик на C++ с нуля
Узнать больше

Mirex

Mirex

Руководитель проекта
  • #2

Дайте весь код полностью посмотреть.

Alexander1

  • #3

GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);

По этой строке вот такие ошибки и варнинги:

C:Users1DesktopENRP.pwn(33728) : warning 213: tag mismatch
C:Users1DesktopENRP.pwn(33728) : error 001: expected token: «,», but found «[«
C:Users1DesktopENRP.pwn(33728) : error 029: invalid expression, assumed zero
C:Users1DesktopENRP.pwn(33728) : warning 215: expression has no effect
C:Users1DesktopENRP.pwn(33728) : error 001: expected token: «;», but found «]»
C:Users1DesktopENRP.pwn(33728) : fatal error 107: too many error messages on one line

Мне хотя-бы исправить Error`s.

Заранее большое спасибо за ответы.

GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);

попробуйте заменить.

Последнее редактирование модератором: 04.03.2015

  • #4

Дайте весь код полностью посмотреть.

if(strcmp(cmd, «/savecar», true) == 0)
{
   if(!IsPlayerInVehicle(playerid, GetPVarInt(playerid,»Create_Car»))) return SendClientMessage(playerid, -1, «Вы должны быть в специально созданном авто!»);
   if(PlayerInfo[playerid][pAdmin] &lt;= 9)
   {
new carid = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(carid);
if(IsARpavto3(model))
{
if(!GetPVarInt(playerid,»Create_Car»)) return SendClientMessage(playerid, -1, «Вы не создавали авто /addcar!»);
  if(zakazavtoid[playerid] &gt;= 400){return 1;}
if(PlayerInfo[playerid][pAdmin] &lt; 9) return SendClientMessage(playerid, -1, «У вас нет прав на использование этой команды!»);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, «USAGE: /savecar [Сумма]»);
new money = strval(tmp);
AllCars++;
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAa]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPa]);
CarInfo[AllCars][cID] = GetPVarInt(playerid,»Create_Car»);
CarInfo[AllCars][cMod] = GetVehicleModel(GetPVarInt(playerid,»Create_Car»));
CarInfo[AllCars][cCol1] = -1;
CarInfo[AllCars][cCol2] = -1;
format(CarInfo[AllCars][cOwner],24,»Nones»);
format(CarInfo[AllCars][cOwnerm],24,»Nones»);
CarInfo[AllCars][cLock] = 0;
CarInfo[AllCars][cPrice] = money;
CarInfo[AllCars][cSport] = 0;
CarInfo[AllCars][cLocke] = 0;
CarInfo[AllCars][cAntiradar] = 0;
CarInfo[AllCars][cDatam] = 0;
CarInfo[AllCars][cDatad] = 0;
CarInfo[AllCars][cNitros] = 0;
CarInfo[AllCars][cProbeg] = 0;
CarInfo[AllCars][cArest] = 0;
    CarInfo[AllCars][cType] = 1;
    new cars = GetPlayerVehicleID(playerid);
    CarInfo[cars][cPaintJob] = -1;
    CarInfo[AllCars][cPaintJob] = -1;
    CarInfo[cars][cType] = 1;
format(CarInfo[AllCars][cPArest],32,»Nones»);
format(CarInfo[AllCars][cNumber],64,»None»);
new iniOpen = ini_openFile(«cars.cfg»);
ini_setInteger(iniOpen, «AllCars», AllCars);
ini_closeFile(iniOpen);
DeletePVar(playerid,»Create_Car»);
CarLabel[CarInfo[AllCars][cID]] = Create3DTextLabel(«ТранзиткаnПродаётся»,0xFFFF00FF, 0.0, 0.0, 0.0,40.0,0,0);
Attach3DTextLabelToVehicle(CarLabel[CarInfo[AllCars][cID]] , CarInfo[AllCars][cID], 0.0, 0.0, 1.1);
CreateCar(AllCars);
SendClientMessage(playerid, COLOR_GRAD2, «Авто успешно создано»);
}
}
else
{
if(PlayerInfo[playerid][pAdmin] == 10)
   {
if(!GetPVarInt(playerid,»Create_Car»)) return SendClientMessage(playerid, -1, «Вы не создавали авто /addcar!»);
  if(zakazavtoid[playerid] &gt;= 400){return 1;}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, «USAGE: /savecar [Сумма]»);
new money = strval(tmp);
AllCars++;
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAa]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPa]);
CarInfo[AllCars][cID] = GetPVarInt(playerid,»Create_Car»);
CarInfo[AllCars][cMod] = GetVehicleModel(GetPVarInt(playerid,»Create_Car»));
CarInfo[AllCars][cCol1] = -1;
CarInfo[AllCars][cCol2] = -1;
format(CarInfo[AllCars][cOwnerm],32,»Nones»);
format(CarInfo[AllCars][cOwner],24,»Nones»);
CarInfo[AllCars][cLock] = 0;
CarInfo[AllCars][cPrice] = money;
CarInfo[AllCars][cSport] = 0;
CarInfo[AllCars][cLocke] = 0;
CarInfo[AllCars][cAntiradar] = 0;
CarInfo[AllCars][cDatam] = 0;
CarInfo[AllCars][cDatad] = 0;
CarInfo[AllCars][cNitros] = 0;
CarInfo[AllCars][cProbeg] = 0;
CarInfo[AllCars][cArest] = 0;
    CarInfo[AllCars][cType] = 1;
    new cars = GetPlayerVehicleID(playerid);
    CarInfo[cars][cPaintJob] = -1;
    CarInfo[AllCars][cPaintJob] = -1;
    CarInfo[cars][cType] = 1;
format(CarInfo[AllCars][cPArest],32,»Nones»);
format(CarInfo[AllCars][cNumber],64,»None»);
new iniOpen = ini_openFile(«cars.cfg»);
ini_setInteger(iniOpen, «AllCars», AllCars);
ini_closeFile(iniOpen);
DeletePVar(playerid,»Create_Car»);
CarLabel[CarInfo[AllCars][cID]] = Create3DTextLabel(«ТранзиткаnПродаётся»,0xFFFF00FF, 0.0, 0.0, 0.0,40.0,0,0);
Attach3DTextLabelToVehicle(CarLabel[CarInfo[AllCars][cID]] , CarInfo[AllCars][cID], 0.0, 0.0, 1.1);
CreateCar(AllCars);
SendClientMessage(playerid, COLOR_GRAD2, «Авто успешно создано»);
}
}
return true;
}

Mirex

Mirex

Руководитель проекта
  • #5

Переменные cAx, cAy, cAz точно Float ?

Alexander1

  • #6

if(strcmp(cmd, «/savecar», true) == 0)
{
   if(!IsPlayerInVehicle(playerid, GetPVarInt(playerid,»Create_Car»))) return SendClientMessage(playerid, -1, «Вы должны быть в специально созданном авто!»);
   if(PlayerInfo[playerid][pAdmin] &lt;= 9)
   {
new carid = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(carid);
if(IsARpavto3(model))
{
if(!GetPVarInt(playerid,»Create_Car»)) return SendClientMessage(playerid, -1, «Вы не создавали авто /addcar!»);
  if(zakazavtoid[playerid] &gt;= 400){return 1;}
if(PlayerInfo[playerid][pAdmin] &lt; 9) return SendClientMessage(playerid, -1, «У вас нет прав на использование этой команды!»);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, «USAGE: /savecar [Сумма]»);
new money = strval(tmp);
AllCars++;
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAa]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPa]);
CarInfo[AllCars][cID] = GetPVarInt(playerid,»Create_Car»);
CarInfo[AllCars][cMod] = GetVehicleModel(GetPVarInt(playerid,»Create_Car»));
CarInfo[AllCars][cCol1] = -1;
CarInfo[AllCars][cCol2] = -1;
format(CarInfo[AllCars][cOwner],24,»Nones»);
format(CarInfo[AllCars][cOwnerm],24,»Nones»);
CarInfo[AllCars][cLock] = 0;
CarInfo[AllCars][cPrice] = money;
CarInfo[AllCars][cSport] = 0;
CarInfo[AllCars][cLocke] = 0;
CarInfo[AllCars][cAntiradar] = 0;
CarInfo[AllCars][cDatam] = 0;
CarInfo[AllCars][cDatad] = 0;
CarInfo[AllCars][cNitros] = 0;
CarInfo[AllCars][cProbeg] = 0;
CarInfo[AllCars][cArest] = 0;
    CarInfo[AllCars][cType] = 1;
    new cars = GetPlayerVehicleID(playerid);
    CarInfo[cars][cPaintJob] = -1;
    CarInfo[AllCars][cPaintJob] = -1;
    CarInfo[cars][cType] = 1;
format(CarInfo[AllCars][cPArest],32,»Nones»);
format(CarInfo[AllCars][cNumber],64,»None»);
new iniOpen = ini_openFile(«cars.cfg»);
ini_setInteger(iniOpen, «AllCars», AllCars);
ini_closeFile(iniOpen);
DeletePVar(playerid,»Create_Car»);
CarLabel[CarInfo[AllCars][cID]] = Create3DTextLabel(«ТранзиткаnПродаётся»,0xFFFF00FF, 0.0, 0.0, 0.0,40.0,0,0);
Attach3DTextLabelToVehicle(CarLabel[CarInfo[AllCars][cID]] , CarInfo[AllCars][cID], 0.0, 0.0, 1.1);
CreateCar(AllCars);
SendClientMessage(playerid, COLOR_GRAD2, «Авто успешно создано»);
}
}
else
{
if(PlayerInfo[playerid][pAdmin] == 10)
   {
if(!GetPVarInt(playerid,»Create_Car»)) return SendClientMessage(playerid, -1, «Вы не создавали авто /addcar!»);
  if(zakazavtoid[playerid] &gt;= 400){return 1;}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, «USAGE: /savecar [Сумма]»);
new money = strval(tmp);
AllCars++;
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAa]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPa]);
CarInfo[AllCars][cID] = GetPVarInt(playerid,»Create_Car»);
CarInfo[AllCars][cMod] = GetVehicleModel(GetPVarInt(playerid,»Create_Car»));
CarInfo[AllCars][cCol1] = -1;
CarInfo[AllCars][cCol2] = -1;
format(CarInfo[AllCars][cOwnerm],32,»Nones»);
format(CarInfo[AllCars][cOwner],24,»Nones»);
CarInfo[AllCars][cLock] = 0;
CarInfo[AllCars][cPrice] = money;
CarInfo[AllCars][cSport] = 0;
CarInfo[AllCars][cLocke] = 0;
CarInfo[AllCars][cAntiradar] = 0;
CarInfo[AllCars][cDatam] = 0;
CarInfo[AllCars][cDatad] = 0;
CarInfo[AllCars][cNitros] = 0;
CarInfo[AllCars][cProbeg] = 0;
CarInfo[AllCars][cArest] = 0;
    CarInfo[AllCars][cType] = 1;
    new cars = GetPlayerVehicleID(playerid);
    CarInfo[cars][cPaintJob] = -1;
    CarInfo[AllCars][cPaintJob] = -1;
    CarInfo[cars][cType] = 1;
format(CarInfo[AllCars][cPArest],32,»Nones»);
format(CarInfo[AllCars][cNumber],64,»None»);
new iniOpen = ini_openFile(«cars.cfg»);
ini_setInteger(iniOpen, «AllCars», AllCars);
ini_closeFile(iniOpen);
DeletePVar(playerid,»Create_Car»);
CarLabel[CarInfo[AllCars][cID]] = Create3DTextLabel(«ТранзиткаnПродаётся»,0xFFFF00FF, 0.0, 0.0, 0.0,40.0,0,0);
Attach3DTextLabelToVehicle(CarLabel[CarInfo[AllCars][cID]] , CarInfo[AllCars][cID], 0.0, 0.0, 1.1);
CreateCar(AllCars);
SendClientMessage(playerid, COLOR_GRAD2, «Авто успешно создано»);
}
}
return true;
}

Замени на это

if(strcmp(cmd, «/savecar», true) == 0)

{
   if(!GetPVarInt(playerid,»Create_Car»)) return SendClientMessage(playerid, -1, «Вы не создавали авто /addcar!»);
   if(!IsPlayerInVehicle(playerid, GetPVarInt(playerid,»Create_Car»))) return SendClientMessage(playerid, -1, «Вы должны быть в специаоно созданном авто!»);
        if(PlayerInfo[playerid][pAdmin] &lt; 7) return SendClientMessage(playerid, -1, «У вас нет прав на использование этой команды!»);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, «USAGE: /savecar [Сумма]»);
new money = strval(tmp);
AllCars++;
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAx],CarInfo[AllCars][cAy],CarInfo[AllCars][cAz]);
GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cAa]);
GetVehicleZAngle(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPa]);
CarInfo[AllCars][cID] = GetPVarInt(playerid,»Create_Car»);
CarInfo[AllCars][cMod] = GetVehicleModel(GetPVarInt(playerid,»Create_Car»));
CarInfo[AllCars][cCol1] = -1;
CarInfo[AllCars][cCol2] = -1;
format(CarInfo[AllCars][cOwner],24,»Nones»);
CarInfo[AllCars][cLock] = 0;
CarInfo[AllCars][cPrice] = money;
CarInfo[AllCars][cSpoiler] = 0;
CarInfo[AllCars][cHood] = 0;
CarInfo[AllCars][cSideskirt] = 0;
CarInfo[AllCars][cNitro] = 0;
CarInfo[AllCars][cLamps] = 0;
CarInfo[AllCars][cExhaust] = 0;
CarInfo[AllCars][cWheels] = 0;
CarInfo[AllCars][cRoof] = 0;
CarInfo[AllCars][cStereo] = 0;
CarInfo[AllCars][cHydraulics] = 0;
CarInfo[AllCars][cBullbar] = 0;
CarInfo[AllCars][cRearBullbars] = 0;
CarInfo[AllCars][cFrontSign] = 0;
CarInfo[AllCars][cFrontBullbars] = 0;
CarInfo[AllCars][cFrontBumper] = 0;
CarInfo[AllCars][cRearBumper] = 0;
CarInfo[AllCars][cVents] = 0;
CarInfo[AllCars][cPaintJob] = -1;
CarInfo[AllCars][cArest] = 0;
format(CarInfo[AllCars][cPArest],32,»Nones»);
format(CarInfo[AllCars][cNumber],64,»None»);
new iniOpen = ini_openFile(«cars.cfg»);
ini_setInteger(iniOpen, «AllCars», AllCars);
ini_closeFile(iniOpen);
DeletePVar(playerid,»Create_Car»);
   CarLabel[CarInfo[AllCars][cID]] = Create3DTextLabel(«——nПродаётся»,0xFFFF00FF, 0.0, 0.0, 0.0,40.0,0,0);
   Attach3DTextLabelToVehicle(CarLabel[CarInfo[AllCars][cID]] , CarInfo[AllCars][cID], 0.0, 0.0, 1.1);
CreateCar(AllCars);
SendClientMessage(playerid, COLOR_GRAD2, «Авто успешно создано»);
return 1;
}

Последнее редактирование модератором: 04.03.2015

  • #7

Переменные cAx, cAy, cAz точно Float ?

Да

Mirex

Mirex

Руководитель проекта
  • #8

Покажите enum где cAx и cPx

  • #9

Покажите enum где cAx и cPx

enum CarsInfo
{
cID,
cMod,
Float:cAx,
Float:cAy,
Float:cAz,
Float:cAa,
Float:cAz1,
Float:cAz2,
Float:cAz3,
cCol1,
cCol2,
cOwner[24],
cOwnerm[32],
Float:cPx,
Float:cPy,
Float:cPz,
Float:cPa,
cLock,
cPrice,
cSpoiler,
cHood,
cSideskirt,
cNitro,
cExhaust,
cWheels,
cRoof,
cStereo,
cHydraulics,
cBullbar,
cRearBullbars,
cFrontSign,
cFrontBullbars,
cFrontBumper,
cRearBumper,
cVents,
cResc,
cPaintJob,
cNitros,
cLocke,
cTrans,
cKruiz,
cKruizbuy,
cLamps,
cSport,
Float:cProbeg,
cArrest,
cPArest[32],
cPArestNick[32],
cNumber[64],
cArest,
cAntiradar,
cDatam,
cDatad,
cAlarm,
NeonID,
cAlarmOn,
cType,
cTypetune[10],
cSlotsfortune,
cObjonveh[10]
};

Последнее редактирование модератором: 04.03.2015

Mirex

Mirex

Руководитель проекта
  • #10

Попробуйте заменить эту строку

if(IsARpavto3(model))

На эту

  • #11

Попробуйте заменить эту строку

if(IsARpavto3(model))

На эту

if(IsARpavto3(carid))

Поменял, но не помогло.

Последнее редактирование модератором: 04.03.2015

Mirex

Mirex

Руководитель проекта
  • #12

Попробуйте закомментировать строку на которую жалуется компилятор и попробуйте скомпилировать, о результатах отпишитесь.

  • #13

Попробуйте закомментировать строку на которую жалуется компилятор и попробуйте скомпилировать, о результатах отпишитесь.

я не понял. Как закомментировать?

Mirex

Mirex

Руководитель проекта
  • #14

я не понял. Как закомментировать?

Уберите строку на которую показывает ошибки или закомментируйте (поставьте с самого начала функции две //)

  • #15

Уберите строку на которую показывает ошибки или закомментируйте (поставьте с самого начала функции две //)

те же самые ошибки получились.

Mirex

Mirex

Руководитель проекта
  • #16

те же самые ошибки получились.

А на какие теперь строки?

  • #17

А на какие теперь строки?

На последующую. То есть, вот на эту:

GetVehiclePos(GetPVarInt(playerid,»Create_Car»), CarInfo[AllCars][cPx],CarInfo[AllCars][cPy],CarInfo[AllCars][cPz]);

Mirex

Mirex

Руководитель проекта
  • #18

Нет, не зная мода, визуально не помочь. Скиньте pwn мода.

  • #19

Нет, не зная мода, визуально не помочь. Скиньте pwn мода.

Прям сюда?

Mirex

Mirex

Руководитель проекта
  • #20

Как вам угодно. Можете сюда, можете в ЛС.


Просмотр полной версии : Ошибки


Страницы :
[1]
2


  1. Ошибки и предупреждения в pawno
  2. Исправление error/warning
  3. [F.A.Q] Нахождение незакрытой или пропущенной скобки
  4. [Вопрос] Не закрытая скобка
  5. [Вопрос] error 052
  6. [Вопрос] Массив
  7. [Вопрос] Мод Unknown
  8. [Поиск] Помогите исправить краш логов при конекте и дисконекте.
  9. [Вопрос] Помогите исправить!
  10. [Вопрос] Помогите чуваки, не знаю как исправить такой баг!
  11. [Вопрос] argument type mismatch
  12. [Вопрос] error 017
  13. [Вопрос] Система авто (Удаление авто)
  14. [Вопрос] Ошибки error 010 и error 035
  15. [Вопрос] error,warning,при нажатия f5
  16. [Вопрос] error: 017
  17. [Вопрос] error 010: invalid function or declaration
  18. [Вопрос] ошибки error,warning
  19. [Вопрос] Ошибка при компиляции
  20. [Вопрос] error 017 & error 029
  21. [Вопрос] SQL. Error #1064.
  22. [Вопрос] Помогите,Ошибка»: error 010: invalid function or declaration»
  23. [Вопрос] По ошибке.
  24. [Вопрос] Warning: 219 | Warning: 235 | Warning: 215, Eror: 017,001,029
  25. [Вопрос] warning 209 в системе регистрации.
  26. [Вопрос] Ошибка сервера File or functions is not found
  27. [Вопрос] Не трудные ошибки
  28. [Вопрос] Ошибка в mysql_log при заходе на сервер.
  29. [Вопрос] Ошибка в mysql_log при заходе на сервер. #2
  30. [Вопрос] Краш клиента: 0x007324B6
  31. [Вопрос] [debug] Server crashed while executing mod.amx
  32. [Вопрос] Команда для подачи звезд /su
  33. [Вопрос] Команда для подачи звезд /su х2
  34. [Вопрос] сбизнесы…
  35. [Вопрос] по чату
  36. [Вопрос] Run time error 10: «Native function failed»
  37. [Вопрос] Выдача администратора
  38. [Вопрос] Как убрать варнинги
  39. [Вопрос] Проблема с запуском
  40. [Вопрос] client exceeded
  41. [Вопрос] много ошибок
  42. [Вопрос] Как исправить?
  43. [Вопрос] Проблема с регистрацией
  44. [Вопрос] Команда /uninvite
  45. [Вопрос] Run time error 19: «File or function is not found»
  46. [Вопрос] error 001/029, warning 217/202
  47. [Вопрос] Проблема с плагином error 010 invalid function or declaration
  48. [Вопрос] Краш сервера
  49. [Вопрос] Run time error 4: «Array index out of bounds»
  50. [Вопрос] Сервер зависает
  51. [Вопрос] Мод на хосте выдает ошибки
  52. [Вопрос] Ошибка в логе (Array index out of bounds)
  53. [Вопрос] Ошибка в логе «Array index out of bounds»
  54. [Вопрос] error 017: undefined symbol «para1»
  55. [Вопрос] error 075: input line too long (after substitutions)
  56. [Вопрос] fatal error 100: cannot read from file: «sergo»
  57. [Вопрос] Баг с Сохранением скина
  58. [Вопрос] Не работают ранги
  59. [Вопрос] Не включается сервера из за БД.
  60. [Вопрос] Ошибка
  61. [Вопрос] при включение сервера, ошибка
  62. [Вопрос] Warning 213
  63. [Вопрос] Не работает база данных
  64. [Вопрос] Ошибка при компилировании
  65. [Вопрос] warning 201: redefinition of constant/macro (symbol «PutPlayerInVehicle»)
  66. [Вопрос] Run Time error 4 «Array index out of bounds» (OnPlayerDeath)
  67. [Вопрос] warning 219: local variable «name» shadows a variable at a preceding level
  68. [Вопрос] БД MySQL Баг-Ошибка.
  69. [Вопрос] ошибка 213
  70. [Вопрос] Что не так
  71. [Вопрос] Баг в магазине 24/7
  72. [Вопрос] Пикапы
  73. [Вопрос] Ошибки в коде, электрошокер.
  74. [Вопрос] Ошибка
  75. [Вопрос] /spec
  76. [Вопрос] Простая команда /makeadmin
  77. [Вопрос] Проверка на броню
  78. [Вопрос] /invite
  79. [Вопрос] Если Exp = a, то Level = b
  80. [Вопрос] Проверка на броню
  81. [Вопрос] /minet Нашёл в инете.И не одна правельно не работает
  82. [Вопрос] Спедомитр
  83. [Вопрос] warning 203: symbol is never used: «UpdateSpeed»
  84. [Вопрос] Ошибка с чатом
  85. [Вопрос] Textdraw
  86. [Вопрос] 2 разные проверки в одном паблике
  87. [Вопрос] Ошибки при новом диалоге
  88. [Вопрос] Не реагирует команда
  89. [Вопрос] Цвета ников
  90. [Вопрос] Подскажите что это ?
  91. [Вопрос] Забнил сам себя
  92. [Вопрос] Ошибка
  93. [Вопрос] Ошибки в коде, команды /pickammo, /putammo, /takeammo
  94. [Вопрос] Ошибка
  95. [Вопрос] Ошибка
  96. [Вопрос] warning 213: tag mismatch
  97. [Вопрос] mxINI база данных гангзон
  98. [Вопрос] квесты
  99. [Вопрос] После рестарта , меняются интерьеры домов, или вообще падают игроки в воздухе
  100. [Вопрос] Ошибка с /spec [ DC_CMD]
  101. [Вопрос] Помогите с GTA
  102. [Вопрос] Концерт Зал.
  103. [Вопрос] загрузка склада, выдает ошибки
  104. [Вопрос] Команда /re.
  105. [Вопрос] Ошибки в начале команд.
  106. [Вопрос] проблема со спавнам
  107. [Вопрос] Что не так? Система показа входа/выхода игрока админам
  108. [F.A.Q] Помогите исправить в регистрацие
  109. [Вопрос] Требуется помощь
  110. [Вопрос] [Error] 4 string’a в enum’e и ошибка 032: array index out
  111. [Вопрос] tag mismatch
  112. [Вопрос] TextDraw — не чего не происходит
  113. [Вопрос] Статистика персонажа
  114. [Вопрос] error 079: inconsistent return types (array & non-array)
  115. [Вопрос] [ПОМОГИТЕ] Персонаж не проходить регестрацию
  116. [Вопрос] Пропущен символ.
  117. [Вопрос] Ошибка с регистрацией mxINI
  118. [Вопрос] Вылетает Pawno
  119. [Вопрос] Сохранение аккаунта
  120. [Вопрос] error 029: invalid expression, assumed zero
  121. [Вопрос] Не работает команда /kick
  122. [Вопрос] Run time error 19: «File or function is not found
  123. [Вопрос] [20:04:28] Loading plugin: mysql [20:04:33] Failed.
  124. [Вопрос] Как вырезать отправку смс на майл
  125. [Вопрос] Помогите пожалуйста разобраться с Mysql ошибкой
  126. [Вопрос] warning 213: tag mismatch
  127. [Вопрос] перехват
  128. [Вопрос] Заморожена функция PhpMyAdmin в OpenServer
  129. [Вопрос] подключение dc_cmd
  130. [Вопрос] error 001: expected token: «)», but found «return»
  131. [Вопрос] Помогите с аккаунтами
  132. [Вопрос] Полоса как на RakNet
  133. [Вопрос] Синтаксическая ошибка
  134. [Вопрос] fatal error 100
  135. [Вопрос] /makeadmin — по нику админа
  136. [Вопрос] Errors | Warnings
  137. [Вопрос] Как лучше хранить большой текст
  138. [Вопрос] Регистрация
  139. [Вопрос] Ошибка Mysql
  140. [Вопрос] Ошибка GameMode:Unkown
  141. [Вопрос] Почему не записывает данные в базу данных?
  142. [Вопрос] ворота дома
  143. [Вопрос] error 035
  144. [Вопрос] Срочно помогите
  145. [Вопрос] warning 201
  146. [Вопрос] Ругань паблика OnPlayerPickUpPickup
  147. [Вопрос] помогите с NPC
  148. [Вопрос] выход за предел массива
  149. [Вопрос] Не подключается к Базе Данных на MySQL
  150. [Вопрос] После рестарта сервер не включается
  151. [Вопрос] По системе домов
  152. [Вопрос] Ошибка и Варнинг
  153. [Include] Ошибка с инклудом — streamer
  154. [Вопрос] Streamer требует плагин
  155. [Вопрос] Ошибка
  156. [Вопрос] Помогите пожалуйста с сервером
  157. [Вопрос] Warning
  158. [Вопрос] Ошибки
  159. [Вопрос] Проблема с плагином Include.
  160. [Вопрос] warning 213: tag mismatch
  161. [Вопрос] Ошибок куча
  162. [Вопрос] Ошибка соединения с MySQL
  163. [Вопрос] Не обрабатывается запрос MySQL
  164. [Вопрос] ошибка в логах MySQL
  165. [Вопрос] sscanf warning: String buffer overflow.
  166. [Вопрос] краш сервера
  167. [Вопрос] Плагин YSF
  168. [Вопрос] Злюка мускул атакует ошибкой)
  169. [Вопрос] Загрузка домов.
  170. [Вопрос] Ошбика AntiDeAMX
  171. [Вопрос] zcmd unkown command
  172. [Вопрос] warning 224: indeterminate array size in «sizeof» expression (symbol «»)
  173. [Вопрос] Help
  174. [Вопрос] error 029: invalid expression, assumed zero
  175. [Вопрос] Run time error 19 Помогите срочно исправить
  176. [Вопрос] Ошибка с SendMes
  177. [Вопрос] Streamer 2.8.1 выдает ошибку
  178. [Вопрос] команда
  179. [Вопрос] Ошибка Unknown
  180. [Вопрос] Ошибка при сохранении аккаунта
  181. [Вопрос] Краш сервера.
  182. [Вопрос] Ошибка Run time error 20: «Invalid index parameter (bad entry point)
  183. [Вопрос] sscanf warning: Format specifier does not match parametr count
  184. [Вопрос] [Error: Function not registered]не Запускается на Host…
  185. [Вопрос] Проблема с объектами
  186. [Вопрос] I couldn’t load any gamemode scripts. Please verify your server.cfg
  187. [Вопрос] [debug] Run time error 4: «Array index out of bounds»
  188. [Вопрос] Pawnc от zeex
  189. [Вопрос] error 002: only a single statement (or expression) can follow each «case»
  190. [Вопрос] error 017: undefined symbol «playerid» на RemovePlayerInfo
  191. [Вопрос] error 017: undefined symbol «iniFile»
  192. [Вопрос] Не работают пикапы
  193. [Вопрос] error 017: undefined symbol «GetDeclensionWord»
  194. [Вопрос] Проблемы/ошибки с казино!
  195. [Вопрос] Run time error 4: «Array index out of bounds»
  196. [Вопрос] error 010: invalid function or declaration
  197. [Вопрос] fatal error 100: cannot read from file: «core»
  198. [Вопрос] error 017: undefined symbol «strtok»
  199. [Вопрос] warning 202: number of arguments does not match definition
  200. [Вопрос] error 017: undefined symbol «fexist»
  201. [Вопрос] не запускается пишет что нету MCVCR100.dll
  202. [Вопрос] warning 217,error 036 Помогите.
  203. [Вопрос] error 12, 29, fatal error 107.
  204. [Вопрос] error 17, 1, 29 в одной строчке
  205. [Вопрос] Помогите поставить бонус на State99 {MYSQL}
  206. [Вопрос] error 014: invalid statement; not in switch
  207. [Plugin] regex.so вырубает сервер
  208. [Вопрос] warning 225: unreachable code
  209. [Вопрос] Run time error 19: «File or function is not found»
  210. [Вопрос] Float warning
  211. [Вопрос] Не сохраняет данные.
  212. [Вопрос] Run time error 19: «File or function is not found»
  213. [Вопрос] Проблема со слотами на сервере
  214. [Античит] Проблема с античитом на оружие
  215. [Прочее] Помогите мод unkown
  216. [Прочее] Неправильное имя телепорта
  217. [Вопрос] Run time error 4: «Array index out of bounds»
  218. [Вопрос] [Варнинг] CreateDynamicPolygon (warning 213)
  219. [Вопрос] Вопрос по DC_CMD
  220. [Вопрос] Работа со структурами в Pawn 4
  221. [Вопрос] [debug] Run time error 4: «Array index out of bounds»
  222. [Прочее] Не выполняется функция
  223. [Вопрос] Запуск samp-server.exe
  224. [Plugin] Ошибка plugin.sql
  225. [Вопрос] Не работает кликабельность TextDraw’a!
  226. [Вопрос] warning 202, 213, 215; error 001, 017
  227. [Вопрос] Проблема с сохранение аккаунта MySQL
  228. [Вопрос] Script[gamemodes/Untitled.amx]: Run time error 19: «File or function is not
  229. [Вопрос] Ошибки при компиляции.
  230. [Прочее] Помогите с ошибкой
  231. [Прочее] Запуск сервера.
  232. [Вопрос] Run time error 19: «File or function is not found»
  233. [Вопрос] Проблема с командой /kick
  234. [Вопрос] Система capture для банд
  235. [Вопрос] Вопрос по объектам
  236. [Вопрос] Варнинг при компиляции.
  237. [Вопрос] error 027
  238. [Вопрос] warning (213, 215). error (021, 001, 029, 001)
  239. [Вопрос] error (021, 021, 021, 021, 021, 021)
  240. [Вопрос] Mailer script says: Error: Missing parameters
  241. [Вопрос] Помогите исправить, целый день сижу…
  242. [Вопрос] Проблема с AntiBH
  243. [Вопрос] Рандомные номера машин
  244. [Вопрос] Проблема с авторизацией
  245. [Вопрос] Не показывает оффлайн игроков во фракции
  246. [Вопрос] «File or function is not found»
  247. [Вопрос] Странность в консоли
  248. [Plugin] Ошибки в плагинах для CS 1.6/CZ
  249. [Вопрос] File or function is not found
  250. [Вопрос] Не сохранение настроек в бд.

Powered by vBulletin® Version 4.2.0 Copyright © 2023 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot

Понравилась статья? Поделить с друзьями:
  • Все ошибки в машине лада ларгус с расшифровкой
  • Все ошибки запуска фаркрай 4
  • Все ошибки доступа какие только могут быть
  • Все ошибки в лексус 570
  • Все ошибки допускаемые в табеле