LINUX.ORG.RU

баян

и это не пример hello world-а, а гнутой программы, оформленной по всем канонам столлманоугодности

Harald ★★★★★
()
Ответ на: комментарий от Harald

Ну понятно, но это же /talks — небольшой оттенок желтизны в заголовке кашу не испортит.

Stahl ★★☆
() автор топика
/* hello.c */
#include <stdio.h>

int main (void)
{
	printf ("Hello World\n");
}
Deathstalker ★★★★★
()

Что за наркоман это делал?

Eddy_Em ☆☆☆☆☆
()

Да блин, чо за дурацкая привычка всюду пихать printf, когда никакого форматирования не требуется? puts для вывода чистой строки служит!

alegz ★★★★
()
Ответ на: комментарий от grem

Было бы чего читать из stdin. А если речь про getch(), то это уже по-хорошему надо задействовать ncurses, что для данной задачи на Linux'овых терминалах совсем не оправдано. Тем не менее, сложного в этой жирнопрограмме (по масштабам задачи) ничего нет:

#include <curses.h>

int main()
{
        WINDOW *hw;
        initscr();
        clear();
        cbreak();
        curs_set(0);
        noecho();
        hw = newwin(4, 17, LINES / 2 - 2, COLS / 2 - 8);
        box(hw, 0, 0);
        mvwaddstr(hw, 1, 2, "Hello, world!");
        mvwprintw(hw, 2, 1, "(press any key)");
        wrefresh(hw);
        wgetch(hw);
        delwin(hw);
        endwin();
        return 0;
}

saahriktu ★★★★★
()
Ответ на: комментарий от rupert

return 0 не надо уже давно не в С, не в С++

То, что Ваш компилятор не требует этого в обязательном порядке, совсем не означает что не нужно. Нужно. Как для большей совместимости с другими компиляторами, так и для понимания происходящего и красоты вообще. Функция типа int? Значит, должна возвращать значение типа int. Которое указывает на статус выполнения программы. В более сложных программах где появляется обработка ошибок при этих самых ошибках добавляется «return 1;». А там уже в оболочке можно по вернувшемуся значению понять возникли ли ошибки или нет. И добавить условие для обработки этого момента в свои скрипты.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Читать может и нечего, но окошко сразу не закроется и это быстрый способ. Не хочет c curses.h в Debian :( (ncurses-base, libncurses5-dev установлен):

 ||=== Build: Debug in cpptest (compiler: GNU GCC Compiler) ===|
obj/Debug/main.o||In function `main':| ../main.cpp|8|undefined reference to `initscr'|
и прочие тоже. Хм, а ещё в codeblocks баг похоже - не работает debug на breakpoints и прочем, если выбрать «konsole -e» в настройках вместо дефолтного xterm.

grem ★★★★★
()
Ответ на: комментарий от saahriktu

В постах выше не хватает «return 0;»:

А вдруг они под C99 собирают?

theNamelessOne ★★★★★
()
Ответ на: комментарий от Stahl

В актуальных стандартах как C, так и C++ для функции main работает неявный return 0;.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

а ты попробуй из DE без предварительного запуска эмулятора терминала/консоли. или такой вариант использования вовсе не рассматривается?

grem ★★★★★
()
Ответ на: комментарий от grem

а ты попробуй из DE без предварительного запуска эмулятора терминала/консоли

Зачем запускать консольную программу из DE? Ты запускаешь, например, find из файлового менеджера? А grep?

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

чтобы запустилось. нет их не запускаю, но в данном случае это не find и не grep. я могу захотеть из DE файл с данными на исполняемый файл перетащить и при этом могу захотеть увидеть результат отработки программы перед закрытием окошка, чтобы не лезть проверять сразу в более большой выходной файл.

grem ★★★★★
()
Ответ на: комментарий от grem

я могу захотеть из DE файл с данными на исполняемый файл перетащить и при этом могу захотеть увидеть результат отработки программы перед закрытием окошка

А запускать свою программу из консоли или из другой программы/скрипта ты никогда не можешь захотеть?

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

могу, но в данном случае хочется лениво возить мышой :(

grem ★★★★★
()

Вы тролль какого уровня?

Bioreactor ★★★★★
()

Никому не нужен хороший хелловорд, людям нужен достаточно хороший хелловорд, но вовремя.

Tark ★★
()
Ответ на: комментарий от Tark

Для хорошего хелловорда всегда сезон.

Stahl ★★☆
() автор топика
Ответ на: комментарий от grem

Отключи автозакрытие в настройках используемого тобой эмулятора терминала.

Вообще de обычно вообще не показывают консольные приложения, если специально не попросить.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Код программы и программа должны быть переносимы между разными ОС и компиляторами, имхо, там даже второй getchar; может потребоваться.

grem ★★★★★
()
Ответ на: комментарий от grem

Консольный софт пишут не ради того чтобы белые буковки на чёрном фоне, а ради автоматизации и всего такого. А лишний ожидаемый ввод скорее всего всё похерит. А кому охота на венде попыриться в окошко cmd.exe, запуская программу по даблклику, тот может написать батник с PAUSE в конце.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от PolarFox

Консольный софт пишут не ради того чтобы белые буковки на чёрном фоне, а ради автоматизации и всего такого.

Так бы сразу и сказал, что вывод в консоль/терминал вообще не нужен. Пойду подумаю, что может похерить (единичный) ожидаемый ввод в «Hello world».

Вспомнил, кажется, зачем мне как-то был нужен второй getchar: мне не хотелось поключать дополнительные библиотеки, а для вывода/ввода в терминале использовался printf/scanf и первый getchar «подбирал» Enter после окончания ввода, пришлось вставить второй getchar.

grem ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.