Здравствуйте, netch80, Вы писали:
N>Например, берём Unix API: N>int open(аргументы); N>реально два значения — дескриптор и код ошибки (который поступает в errno).
Тут есть своя логика, примитивная конечно.
Признак ошибки -1 в возвращаемом значении, если ошибки нет, то её код не нужен совсем.
N>int pipe(int fildes[2]); N>три значения — два дескриптора и код ошибки. N>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); N>три выходных — код ошибки, сокет и адрес. N>И так далее. N>Windows? То же самое: у до чёрта функций код ошибки передаётся боковым каналом, его надо доставать через GetLastError(). И аналог такого accept() есть, и многое другое.
Это все забавно, но что получается, что языкам, где не предусмотрено возвращение нескольких значений путь в эту новую "правильную" ОС с "правильными" системными вызовами будет закрыт? Или придется лепить страшные костыли.