Компилятор Делавар. Нововведения в языке. Функции

Материал из ТХАБ.РФ
Перейти к: навигация, поиск

Нововведения в языке. Функции

Ключевое слово 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