Просмотрел исходный код для sudo, как указано на this site, и наткнулся на эту супер странную подпись типа (вопрос с бонусом: есть ли более C-подобный термин для «сигнатуры типа», ?) для главного:Использование нестандартной сигнатуры основного типа в C
int
main(argc, argv, envp)
int argc;
char **argv;
char **envp;
{
Я понимаю, что сам стиль является Oldskool K & R. то, что я действительно заинтересован в том факте, что главный принимают бонусный аргумент, char **envp
. Зачем? sudo - довольно стандартный инструмент командной строки и вызывается как таковой. Как операционная система знает, что делать, когда она сталкивается с основной функцией, которая не определяется обычным (int argc, char *argv[])?
Много раз я сам был ленив и просто оставил аргументы полностью и независимо от того, какую программу я писал (самое опасное, что может случиться с C, я знаю: p)
Еще одна часть моего вопроса: какой классный материал позволяет вам это делать? У меня есть догадка, что это помогает куче со встроенным программированием, но у меня, к сожалению, было минимальное воздействие этого и не могу сказать. Я хотел бы видеть конкретные примеры
Если бы вы упомянули сборку, я зацепил бы меня. Мне нравится материал низкого уровня :) Также пришлось принять за то, что заставил меня вспомнить это странное ключевое слово extern. С нетерпением ждем возможности получить руки и на самом деле обманывать это сегодня вечером, должно быть информативным – TheIronKnuckle