Архив рубрики: Великий и могучий Си

Си: парсинг GSV GPS nmea сообщение

По просьбам трудящихся опишу как доработать парсер из заметки AVR: подключаем GPS приёмник для работы с GSV сообщениями.  Исходный код программы приведен в статье и прикреплен в виде архива.

Рубрика: Великий и могучий Си | Добавить комментарий

Си: используем стандартные макросы

Компилятор gcc определяет несколько стандартных макросов: __LINE__  — номер строки в файле; __FILE__   — имя файла; __func__  или __FUNCTION__  — имя функции; __DATE__ — дата компиляции; __TIME__ — время компиляции ;

Рубрика: Великий и могучий Си | Добавить комментарий

Makefile: справочник

При создании makfile может много различных нюансов, но помнить всё сложно, буду их потихоньку добавлять в эту заметку.

Рубрика: Великий и могучий Си | Метки: | Добавить комментарий

Простое FIFO

Столкнулся с интересной реализацией циклического буфера на Си, поначалу даже подумал, что этот код не работает, но разобравшись, решил использовать в своих проектах. Весь код реализован в виде defin’ов и содержится в одном заголовочном файле fifo.h

Рубрика: Великий и могучий Си | Метки: , | Комментарии (41)

Make: cтруктура Makefile

make — это утилита для автоматической сборки программ. Позволяет отслеживать изменения в исходном коде программы и компилировать не весь проект целиком а только те файлы которые изменились или те которые зависят от внесенных изменений. При больших проектах это дает существенную … Читать далее

Рубрика: Великий и могучий Си | Метки: , , , , | Добавить комментарий

Подводные камни define’ов

Определение макросов с помощью define очень часто используется программистами. Но есть некоторые особенности, незнание которых может привести к длительным поискам ошибок. Например есть макрос: #define square1( a, b ) \ a*= a; \ b*= b;#define square1( a, b ) \ … Читать далее

Рубрика: Великий и могучий Си | Метки: , | Добавить комментарий

Что бы это значило?

Язык Си позволяет создавать выражения, которые не сразу и поймешь. Знакомый принес с собеседования вот такую задачку: Что выведет программа? int x = 2; x += x+++++x; printf( "x=%u\r\n", x ); int x = 2; x += x+++++x; printf( "x=%u\r\n", … Читать далее

Рубрика: Великий и могучий Си | Метки: , | Комментарии (3)

Функции изменения порядка бит

Первый вариант — хитрый unsigned char bits_reverse( unsigned char bits ) { bits = ( ( bits & 0xF0 ) >> 4 ) | ( ( bits & 0x0f ) < < 4 ); bits = ( ( bits & … Читать далее

Рубрика: Великий и могучий Си | Метки: , | Добавить комментарий

Выравнивание и размер структуры

Есть у нас, допустим структура. struct my_struct{ int a; char b; int c; };struct my_struct{ int a; char b; int c; }; Но если на разных платформах ( например avr и arm ) выполнить следующий код printf("размер структуры %u\r\n", sizeof( … Читать далее

Рубрика: Великий и могучий Си | Метки: , | Комментарии (4)

Как создать демона в linux

Демон — это программа не имеющая стандартного ввода и вывода, и при этом работающая в фоновом режиме. Исходный код простейшего демона:

Рубрика: Великий и могучий Си | Метки: , | Комментарии (8)