Просмотр полной версии : [Вопрос] stock, static, const
...dolphin:з
06.07.2015, 12:47
Раньше сидел на другом форуме, решил зайти на ваш и был удивлен. Тут совсем другой код, не понятный мне. Кто может объяснить, в каких случаях использовать static, const, static const и ПЕРЕМЕННУЮ stock. Буду рад, если вы еще напишите, в чем различие между new и этим
NewGreen
06.07.2015, 14:15
Если владеете английским языком, то на странице официальной документации Pawn есть описание различий 60-62 стр.
http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf
Если в двух словах то:
static - можно применять во включаемых файлах (include), область видимости этой переменной будет ограничена файлом, т.е. если в моде объявить переменную с таким же именем что и в файле, то при компиляции, не будет ошибки в виде:
error 021: symbol already defined:
const - (лат. constanta — постоянная, неизменная) позволяет создавать переменные, значение которых в дальнейшем нельзя изменить.
static const - тоже что и просто const, но опять же, позволяет ограничить область видимости в пределах файла, и избежать появления предупреждения:
warning 201: redefinition of constant/macro
stock - если переменная обозначена как stock, то при компиляции, если переменная не используется, она будет проигнорирована компилятором, в следствии чего не появится предупреждение вида:
warning 203: symbol is never used:
...dolphin:з
06.07.2015, 14:30
Т.е. мне продолжать использовать new?
NewGreen
06.07.2015, 15:02
Т.е. мне продолжать использовать new?
Хм, думаю на этот вопрос, Вы должны сами для себя, ответить. Вы пишете алгоритм, и Вам решать что использовать в процессе его написания.
К примеру, если Вы будете писать алгоритм нахождения площади поверхности сферы, в формуле нахождения которой используется число Пи.
Число Пи - это математическая константа, поэтому его можно записать используя const. Ваша программа будет выглядеть так:
#include <a_samp>
const Float: Pi = 3.141592;
new Float: S,r;
main()
{
r = 10;
S = 4*Pi*(r*r);
printf("S = %f",S);
return 1;
}
Хотел бы узнать подробную информацию о static и const, в каких случаях их нужно использовать и как правильно, ну и если можно пару примеров.
Как я понял const придерживается одного заданного значения, и его изменить нельзя.
Desulaid
15.09.2015, 16:31
const - это константа, значение которой вы устанавливаете сами и оно не измениться не при каких условиях.
static - это объявление переменных и массивов (и т.д.), видимость которых ограничено файлом, где вы создаете их.
const UNTITLED = 5;
И значение этой константы будет навеки равным пяти, аналогичная ситуация с #define
#define UNTITLED (5)
Например в файле odmenki_vsem.INC создали массив
static over_adm_level[MAX_PLAYERS];
Потом вы подключили инклюд(где у нас находится массив) и к примеру создали массив в самом .pwn файле с точно таким же именем. Но конфликта имен не будет, потому что static массив виден только в файле, в котором мы его и создали. С ними работается так же как и с обычными переменным, созданными через new
Вроде так ;)
Daniel_Cortez
15.09.2015, 16:40
Думаю, целесообразно будет объединить эту тему с другой. Одну секунду...
EDIT: Готово.
const - это константа, значение которой вы устанавливаете сами и оно не измениться не при каких условиях.
static - это объявление переменных и массивов (и т.д.), видимость которых ограничено файлом, где вы создаете их.
const UNTITLED = 5;
И значение этой константы будет навеки равным пяти, аналогичная ситуация с #define
#define UNTITLED (5)
Например в файле odmenki_vsem.INC создали массив
static over_adm_level[MAX_PLAYERS];
Потом вы подключили инклюд(где у нас находится массив) и к примеру создали массив в самом .pwn файле с точно таким же именем. Но конфликта имен не будет, потому что static массив виден только в файле, в котором мы его и создали. С ними работается так же как и с обычными переменным, созданными через new
Вроде так ;)
Не совсем понял насчет const то есть вместо new можно использовать const, или как?
Видимость переменных в pawn!? Что-то новенькое...
const
Объявляет переменную, которая не может быть изменена кодом.
static
Статическая переменная является глобальной переменной, но с более ограниченной областью применения. При использовании static на глобальном уровне в результате чего создаются переменные ограничиваются только тот раздел в котором они были созданы .
но с более ограниченной областью применения
При использовании static на глобальном уровне в результате чего создаются переменные ограничиваются только тот раздел в котором они были созданы .
Не очень уж и понятно, анг текст переводчиком переводил?
Кто нибудь может своими словами сказать насчет static
Desulaid
15.09.2015, 20:18
Видимость переменных в pawn!? Что-то новенькое...
Ну это же я :D
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot