Выходная инструкция D

Есть ли в D оператор выхода, аналогичный тому, что используется в java, python, c/c++. Что (большой шок) завершит выполнение программы? Что-то вроде exit();


person alexmherrmann    schedule 17.08.2011    source источник
comment
Насколько я помню, D поддерживает стандартную библиотеку C, которая содержит функцию exit().   -  person Karel Petranek    schedule 18.08.2011
comment
Да, но, если возможно, я хотел бы оставить только D, может быть, я мог бы создать исключение, перехватить его, и это также завершилось бы выходом.   -  person alexmherrmann    schedule 18.08.2011
comment
Это, вероятно, был бы лучший способ справиться с этим. Обычно вы хотите выйти через main, а не через произвольное место в программе, как это произошло бы с exit. Это приводит к лучшей обработке ошибок и облегчает понимание того, что происходит.   -  person Jonathan M Davis    schedule 18.08.2011


Ответы (1)


Если вы хотите exit, используйте функцию C exit.

import core.stdc.stdlib;

void main()
{
    exit(-1);
}

Я не совсем уверен, как это влияет на время выполнения D и еще много чего. Возможно, вещи не убираются так, как вам обычно хотелось бы, а может быть, все в порядке. Я бы не советовал использовать его в целом, поскольку обычно есть лучшие способы справиться с выходом из программы. Но объявление функции C находится во время выполнения, поэтому его легко использовать, если вы хотите.

person Jonathan M Davis    schedule 17.08.2011
comment
приятно знать, что сообщество D растет! Только что посетил новый сайт и был удивлен последними релизами. - person alexmherrmann; 18.08.2011
comment
Релизы происходят довольно регулярно, но когда мы перенесли код на github, это действительно повысило уровень участия сообщества в разработке компилятора и стандартной библиотеки. Кроме того, в последних выпусках исправлено тонна ошибок. - person Jonathan M Davis; 18.08.2011
comment
Это на гитхабе? Может быть, кто-то может добавить оператор выхода. - person alexmherrmann; 18.08.2011
comment
Они не собираются добавлять функцию exit, когда она уже есть в C. Что бы он делал в любом случае, кроме вызова функции C? Выбросить исключение? Вы можете сделать это самостоятельно без вызова дополнительной функции. Просто брось. И если бы функция D exit не делала то, что делает функция C, это просто запутало бы людей, знакомых с функцией C. Если вы хотите exit, используйте exit языка C. Если вы хотите использовать исключение и поймать его в основном, сделайте это. Это два совершенно разных подхода. - person Jonathan M Davis; 18.08.2011