EnglishРусский  

   Приложение

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

Вызов функций и методов

Вызов функции и метода

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

a = my.mymethod( myfunc( a, b + c ))
a = b->mystruct.mymethod( d )

Вызов функции по адресу

В переменной типа uint может храниться адрес (идентификатор) функции. Для вызова функции по ее идентификатору используется операция ->func и далее в скобках перечисляются параметры. В этом случае следует следить за количеством параметров и их типами, так как компилятор не может проверить совпадение параметров. Таким образом можно вызывать не только функции, но и методы и операторы.

a = &myfunc
a->func( c, d )

Gentee также позволяет вызывать внешние функции по их адресу. Например, при динамическом подключении DLL библиотек, адрес функции можно получить с помощью Windows API функции GetProcAddress. Для вызова функции по адресу используется операция ->stdcall и далее в скобках перечисляются параметры. Если функция имеет тип cdecl, то нужно использовать служебное слово cdecl вместо stdcall.

a = GetProcAddress( mylib, "myfunc".ptr())
a->stdcall( 1, b )

Вызов text функции

Вызов text функции осуществляется с помощью оператора @. Операция может быть как унарной, так и бинарной.

Унарная операция

@ name(...)
В случае вызова из функции func или метода, вывод text функции будет осуществляться на консоль. Если произошел вызов из text функции, то вывод будет осуществляться туда же куда он происходил у текущей text функции. При унарном вызове значок '@' можно опускать. То есть вызывать text функцию как обычную функцию.

Бинарная операция

dest @ name(...)
При использовании бинарной операции вызова, слева необходимо указать строку куда будет происходить вывод из text функции. Вывод в строку будет осуществляться в режиме добавления данных.

Вы можете использовать оператор @ не только для вызова text функций, но и для вывода строк. Если в правой части будет стоять переменная или выражение типа строка, то будет осуществлен вывод этой строки на консоль или добавление к строке вывода, как при вызове text функции.

str a
@mytext( 10 )    // Console output
a @ mytext( 20 ) // string output
@"My text"       // print( "My text" )

Смотрите также

Редактировать