Взялся наконец учить C/C++. И встал у меня вопрос о выборе литературы. Люблю бумажные книги. Денег на хорошую книжку не жалко, но надо её найти. Т.к. я пользователь linux, то книжки а-ля «программирование на C++ в visual studio» меня не очень интересовали.
Нашел сперва книжку «Программирование на C++ в Linux» (красненькая обложка). Даже скачал её. Вроде бы неплохая книга, но там сходу в первой же главе сразу ООП и всё такое. Я ООП не боюсь (при работе на PHP применял), но хотел бы начать с элементарного. Т.е. и по базовому синтаксису пройтись, разобраться с указателями, выделением памяти и тд и тп. Т.е. начать хотел всё-таки с изучения C, а не C++. Поэтому книгу «Программирование на C++ в Linux» я отложил на попозже.
Затем я просмотрел еще ряд книжек в инет-магазинах и на книжной ярмарке, но как понять какая книга хорошая – неясно. Поэтому я в таких ситуациях пытаюсь добиться у знакомых рекомендации чего-либо. Так и сделал. И мне подкинули старенькую (1996 год) книжку «Начальный курс C и C++» (авторы: Б.И. Березин и С.Б. Березин), которую я начал читать, но оказалось, что инфа там немного может быть неактуальна. Решил, что всё-таки надо что-нибудь свежее купить.
Стал снова гуглить. Наткнулся на очень интересную online-книгу: «Программирование в Linux с нуля«. Почитав там введение обнаружил упоминание о книги Кернигана и Ритчи. Тут же вспомнил, что о какой-то их книги было упоминание так же и в старой книге, которую я начинал читать.
И погуглив я нашёл то, что надо: «Язык программирования C«. Авторы: Брайан Керниган и Деннис Ритчи. Оказалось, что это вобщем-то классическая книжка по C. От авторов языка. У книги было 34 переиздания в штатах. На русском языке было одно переиздание. Посоветовавшись с мамой (она тоже программист), выяснилось, что это действительно стоящая книга, а она просто про ней забыла, когда я спрашивал совета.
Я разумеется тут же загорелся идеей покупки. И, вобщем-то, через полтора часа книжка была у меня в руках. Уже начал читать. Очень доволен. Материал излагается понятно, достаточное количество примеров. А так же есть задания, которые я с удовольствием делаю. Вобщем рекомендую!
hello world на C в linux
Если программировать в linux, то вы столкнётесь с makefile. Это файл, в котором содержатся инструкции для компилятора что и как делать. На первый взгляд может показаться, что это всё сложно, но на самом деле не сильно ) Для начала нам ведт достаточно и неглубоких знаний, а хотя бы базовых. Вот пример простого makefile:
CC = gcc
all: hello
hello: hello.o
hello.o: hello.c
.PHONY: clean
clean:
rm -f hello hello.o
В кратце поясню. gcc – это компилятор, с помощью которого вы будете компилировать своё приложении. gcc помоему всегда есть в linux. Ну и в этом makefile предполагается, что текст вашей программы написан в файле hello.c А после компиляции вашей программы вы получите исполняемый файл hello. Для более подробного изучения работы с makefile мне порекомендовали книгу Managing Projects with GNU make.
Ну и для полноты примера приведу собственно текст программы, которая выводит hello world:
#include <stdio.h>
main() {
printf ("Hello world\n");
}
Сохраните этот текст в hello.c
Запустите из консоли в этой папке команду make (проверьте, чтобы makefile описанный выше лежал в этой же папке). Если ошибок нет, то в этой же директории должен появиться исполняемый файл hello. Для его запуска вы можете написать в этой директории: ./hello
Если всё сделано правильно, то вы увидите сообщение hello world на мониторе. Поздравляю! =)
yas@yas-desktop:~/cpp/hello$ ls
hello.c makefile
yas@yas-desktop:~/cpp/hello$ cat hello.c
#include <stdio.h>
main() {
printf ("Hello world\n");
}
yas@yas-desktop:~/cpp/hello$ cat makefile
CC = gcc
all: hello
hello: hello.o
hello.o: hello.c
.PHONY: clean
clean:
rm -f hello hello.o
yas@yas-desktop:~/cpp/hello$ make
gcc -c -o hello.o hello.c
gcc hello.o -o hello
yas@yas-desktop:~/cpp/hello$ ls
hello hello.c hello.o makefile
yas@yas-desktop:~/cpp/hello$ ./hello
Hello world
yas@yas-desktop:~/cpp/hello$
Вы неправильно дали код программы
вот правильный
#include
int main() {
printf (»Hello world/n»);
return 0;
}
Link | Май 9th, 2010 at 19:25
Alexey а почему ваш правильнее? Тем что вы ноль возвращаете?
В классическом издании ноль не возвращается.
А вот подключить библиотеку stdio.h вы забыли так же как и автор.
#include
main()
{
printf (»Hello world/n»);
}
Link | Июнь 15th, 2010 at 20:17
Нда… Alexey слова про библиотеку забираю. )))
Link | Июнь 15th, 2010 at 20:18
тут просто «порезались» < и >
В посте поправил
Link | Июнь 26th, 2010 at 22:19
Автору – Спасибо!
2 Alexey
Чем поправлять человека, бессмысленным добавлением ретурна, лучше сказали бы спасибо.
Борланд компилятор, например, не требует ни обьявления типа функции, ни возвращения какого либо значения.
printf (»Hello world/n»); – переход на новую строку в конце предложения не получишь.
«\n» и «/n» – разные вещи.
Да и ковычка в начале странная какаято ;)
Link | Июль 14th, 2010 at 11:56