Компилятор Делавар. Нововведения в языке. Функции
Нововведения в языке. Функции
Ключевое слово function больше не используется для объявления функции. Исчезло также ключевое слово declaraton. Для декларации функции используется следующий синтаксис:
ret_type [modif] function_name([param_list])
Например:
string __stdcall GetName(int id)
По умолчанию используется конвенция вызова функции, принятая для языка Си: __cdecl. Возможно использование модификатора __stdcall, принятого для вызова функций Win32 API. Параметры функции разделяются запятыми.
Возвращаемые значения и параметры функции на данный момент не могут быть многомерными массивами ссылочного типа (не реализовано); возвращаемые значения функции не могут быть также значимыми составныи типами или массивами. Параметры базовых типов передаются по значению, пользовательские типы и массивы - по ссылке. Возможна передача параметров базового типа по ссылке при использовании ключевого слова ref. Передать параметр с использованием этого ключевого слова возможно также и для ссылочных типов.
Если задан прототип функции, и отсутствует тело функции в файле исходного кода, то такая функция считается определенной во внешней библиотеке (модуле). Например:
// Функция printf определена во внешней библиотеке int printf(string, ...)
int Sum(int a, int b) { return a + b } void Start() { printf("%d", Sum(1, 2)) }
Троеточие в параметрах прототипа функции printf, как и положено означает, наличие переменного числа параметров, первый из которых, в данном случае, обязателен. Однако, в языке возможность определения функций с переменным числом параметров не реализована.
Также стало возможным использование полиморфных функций и методов:
void foo(string text, bool f) { } void foo(string text) { foo(text, true) }
У функции Start (точка входа в программу) появилась возможность получать параметры командной строки (за исключением формата COM). Синтаксис стандартен:
void Start(int argc, string[] argv) { }
См. также
Яндекс | Картинки | Видео | Карты | Карты ОСМ | Спутник | Гугл | Вольфрам-Альфа | РуВики | EnWiki