- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
#include <gtk/gtk.h>
int main(int argc, char *argv[], GtkWidget* vbox) {
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 450, 700);
gtk_window_set_title(GTK_WINDOW(window), "Model Viewer (Version 36)");
//test();
menubar(window);
opengl(window);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Так что подменить его и будет вам main() с желаемым прототипом.
(да, я знаю про зеленый текст, просто я зануда)
Хуже если наоборот, crt1.o вызывает main всего с двумя аргументами, а в нашей программе сигнатура main содержит GtkWidget* vbox. Тогда только Царь знает, куда указывает vbox.
на самом деле там в компилере/линк скриптах есть магия которая в зависимости от прототипа main() генерит его правильный вызов, с правильным количеством аргументов.
по крайней мере раньше (pre C89?). потому что `void main()` было тоже разрешено, и компилер всовывал туда еще `exit(0)`, дефолтный код выхода. но похоже это больше не поддерживается, так как С стандарт больше `void main()` не разрешает.
где-то и читал, и в прошлом `void main()` видел.
Зато он гораздо более ужасную вещь разрешает - int main() без return...
то ли гцц это не умеет, то ли фиг его знает, но возврат из майна это результат последней операции. типа `int main() { printf("\n"); }` выйдет с кодом 1 (потому что printf() возвращает 1 потому что один символ выводит.)
Там, емнип, от -std= очень сильно зависит. На каких-то стандартах - 0, на каких-то - UB, как и в обычных функциях (та самая единичка, затесавшаяся в eax после printf).
Только вот с каким стандартом чо - не помню. Поэтому я всегда что-нибудь возвращаю, ибо нехуй...
-std=c89 => UB
-std=c90 => UB
-std=c99 => 0
ЗЫ да, версии стандарты я не догадался подёргать.
Который мирно жил с UB'ом десятилетиями, пока в C99 эту срань не узаконили...
Имхо, не та проблема, которая предвещает много сражений. При сборке говнософта достаточно было бы добавить одну строку в конец main'а. Всё.
Выпилили же в конце-концов говнофичу с мутабельными строковыми литералами, никто особо и не возмущался (хотя я своими глазами видел софт, который эту говнофичу абузил)...
если pre-ANSI конпилеры это обрабатывали - то оно не было UB. понятие UB появилось только после стандартизации.
я этой фишкой проникся на Perl5 vs Perl6. Perl6 это стандарт, а Perl5 - это реализация. Если в Перл5 что-то не работает/работает загадочно официальный ответ "смотреть в код". Для Перл6 - "смотри в стандарт, и открывай баги для твоей конкретное реализации."
живой программист на перл в 2016м году
жалко что на нем сейчас 0 вакансий, 0 проектов и 0 человек им пользуется
https://spb.hh.ru/vacancy/16448792?query=perl
жж написан на перле
много всякой широкоиспользуемой или сложно-подменимой дряни типа otrs, bugzilla написано на перле
ну вон кое-что и на Коболе написано в бизнесе-то)
а зачем багзила? Ишью треккеров сейчас как грязи же
сравнивая одно с другим, могу ответственно заявить - всё говно кроме мочи
Я кушал Jira, кушал Mantis и Yourkit.
Еще думал bugtrack попробовать.
В общем я согласен с тем что все говно.
много кликать надо, чтобы состояние задачи изменить
групповое редактирование отсутствует
спасибо хоть есть интеграция с гитом, может иногда поллить хранилище и менять статус ошибок, когда встречает в коммитах ключевые слова (а иногда может виснуть к ебеням на этой операции)
вот всё времени нет в отделе автоматизировать перевод кучи задач (багов) из состояния в состояние при сдаче релиза в тестирование, а уж о том, чтобы бюрократизировать учет рабочего времени, или хотя бы ведение всех задач проекта в нём и речи нет - если инструмент тормозит рабочий процесс, то он просто не выживает
1. В редмайне есть контекстное меню, много кликать не надо, чтобы состояние задачи поменять. Кстати, это же и групповое редактирование. Если из самого таска, то есть плагины, вроде этого: https://www.redmine.org/plugins/issue_hot_buttons
2. У редмайна очень простая и понятная структура БД. Автоматизируется там всё, что угодно, и как угодно, такая банальность, как автоматический перевод из статуса в статус вообще за три минуты делается.
3. Любая бюрократия тормозит рабочий процесс. А уж делать из редмайна учёт рабочего времени... Мне кажется, что вы там упоролись... Впрочем, можно плагины поискать, вдруг уже кто-то до вас так же упоролся.
ну вот видишь, не спросил бы, и не узнал о таком
он даже кастомные поля умеет группой дрочить!
спасибо добрый человек
> А уж делать из редмайна учёт рабочего времени
был у нас один исполнительный директор
пытался заставить вести весь учет в редмайне, а также считать косты по кокомо, которого он переработал на предыдущей работе
но, как грицца, если коллектив плюнет в тебя, ты утонешь
P.S. А в рашке уже вторник.
под Jira надо много буков на джаве писать (вооюще не люблю атласин) под йоркит вообще на их собственном DSL:)
ну да, однострочники писать когда седа и авка мало
тащемто он для того и делался: чтобы логи парсить. Ларри не виноват что потом какие-то упыри начали на нем делать веб-приложения и писать сложную бизнес-логику
синтаксис через жопу
да это же джаваскрипт!!!
> не может стать хуже
От узаконенного говна лучше язык уж точно не стал.
> где-то и читал, и в прошлом `void main()` видел.
Да, было такое. Очень давно. Вообще много всякой хрени было
main()
main(void)
void main()
void main(void)
int main(void)
Чего никогда не видел, так это:
auto main(void)
да и вообще есть шанс что ребята, пришедшие из других яп будут делать что-то вроде
https://github.com/lattera/glibc/blob/master/csu/libc-start.c#L87
Никакой магии линковщика нет, main всегда такой.
Возможно, на платформах, где ABI не допускает забивать на последние аргументы, магия действительно происходит.
Только в линуксах нифига не cdecl
ваша информация устарела. systemd заменит libc своей встроенной версией уже начиная с версии 244. bash - с версии 258. GNOME - с версии 268. само собой разумеется начиная с этой версии KDE/Qt/этц приложения больше не будут поддерживаться.
systemctl launch postgres.applicatio
как только systemd дойдёт до поглощения gcc. sendmail.cf путь указал. писаться все будет на Valа и GCC будет это в набор .ini/.application переводить. зато секурити - потому что никаких тебе буффер оверфлоу. ;-)
Если хочешь править миром - пиши конпеляторы, %abusername%. Чем больше конпеляторов напишешь - тем больше ты правишь миром.
Я всё сказал, наверное.