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

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
 
м
 
Строка 1: Строка 1:
 +
'''Нововведения в языке. Функции'''
  
 +
Ключевое слово 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)
 +
  {   
 +
  }
  
 
== См. также ==
 
== См. также ==

Текущая версия на 21:57, 13 января 2016

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

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