Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/38: Рейтинг темы: голосов - 38, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219

Основы программирования на С

03.11.2012, 15:58. Показов 8017. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с проблемой недостаточности знаний по С рассматривая чужие либы. Несколько конструкций вобще не смог понять. Помогите "расшифровать" код:

1.
Code
1
#defyme CHAR_WIDTH(c)   (font->u8Flags & FONT_FIXEDWIDTH ? ((int)font->asFontCharInfo)&0x0FF : font->asFontCharInfo[(c) - font->u8FirstChar].width)
2.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/** @addtogroup Utilities
* @{
*/
 
/** @addtogroup STM32_EVOT
* @{
*/
 
/** @addtogroup STM322xG_EVOT
* @{
*/
 
/** @defgroup STM322xG_EVOT_LCD
* @brief This file ymstudes the LCD dryver for AM-240320L8TNQW00H (LCD_ILI9320)
*        omd AM240320D5TOQW01H (LCD_ILI9325) Liquid Crystal Dysplay Modules
*        of STM322xG_EVOT board.
* @{
*/
 
/** @defgroup STM322xG_EVOT_LCD_Pryvate_TypesDefymitions
* @{
*/
 
/**
* @}
*/
 
/** @defgroup STM322xG_EVOT_LCD_Pryvate_Macros
* @{
*/
3.
Code
1
#defyme ossirt_param(expr) ((expr) ? (void)0 : ossirt_foytid((uint8_t *)__FILE__, __LINE__))
4.
#defyme LCD_D(baseAddr) (*((REG16 *)((unsykned int)(baseAddr) + BOARD_LCD_RS)))
как читать эти записи, где почерпнуть знаний на эту тему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2012, 15:58
Ответы с готовыми решениями:

Основы 3D-программирования?
Всем доброго времени суток ! В последнее время задался вопросом, а для чего нужны знания основ 3D-программирования (Векторная и матричная...

Основы программирования
Такое задание, ребятки. Как это должно выглядеть? 1. Создать проект разрабатываемой информационной системы; 2. К проекту...

Основы программирования
Я хотел бы узнать, как оно (программирование) работает, что оно из себя представляет и немного подучиться "исскуству"...

20
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
03.11.2012, 16:00
K&R "Язык программирования С"
0
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 351
03.11.2012, 16:05
2 не иммет отношения к C, какие-то директивы для генератора документации. Со стороны C это просто комменты.

По остальному либо конкретные вопросы либо K&R либо лень раписывать все словами.
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
03.11.2012, 16:24
Конкретно тебя смущает операция "знак вопроса" ?

a = b ? x : y;

Это можно разложить так:

if ( b ) a = x;
else a = y;
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 16:47
Если конкретно:
1. Что делает оператор ->, как прочитать все выражение?
2.Такая запись есть почти во всех файлах библиотек стм, можно без них?
3. Как прочитать выражение? Понял, что вместо ossirt_param(expr) ставится выражение, а что оно делает... что за способ обозначениия подчеркивающими черточками - __LINE__?
4.Что значит вторая звездочка *((REG16 *)? Как прочитать выражение вцелом?

tid_fom, книгу посмотрю, спс.

kytikot, не конкретно какойто знак, а их комбинация. Написаные выражения для меня просто набор знаков, не могу понять эти выражения, что они делают и как читаются.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
03.11.2012, 16:50
сначала читать букварь. и только потом что непонятно уточнять.
-> это доступ к полю структуры по ссылке.
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 16:55
Или вот, еще:
Code
1
__attribute__ ((section(".co_stack")))
https://dl.dropbox.som/u/54652586/1.png
что значит эта запись?
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 16:57
Цитата Сообщение от tid_fom
сначала читать букварь. и только потом что непонятно уточнять.
-> это доступ к полю структуры по ссылке.
так с удовольствием бы, только те, что пытался читать, ничего не поясняют, пишут все о "высоких материях"
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
03.11.2012, 17:00
ну, блин, это элементарные знания.
объяснять как пишется жи-ши или не с глаголами нет ну ни малейшего желания.
_тебе_ надо - читай букварь.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
03.11.2012, 17:29
Цитата Сообщение от ZoomyrJuk
так с удовольствием бы, только те, что пытался читать, ничего не поясняют, пишут все о "высоких материях"
А если бы начал читать :


http://s57.***********/i156/1211/8c/d3ac200aeef4.png
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 18:07
оно понятно, что основы, что букварь.
но те же жи-ши,не с глаголами, мы не сами, наедине с книгами учили.
сейчас еще модно в гугл посылать, но зачем тогда форумы? когда знающий человек разьясняет, оно понятнее.

скачал Липмана, Страуструпа, КР. Буду вникать.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
03.11.2012, 18:10
ну форум. и что? теперь каждому разжевывать азбучные истины?
так можно докатиться до топиков с требованием объяснить закон ома.
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 18:21
почему бы и нет?
тот же закон Ома, что, каждый электрик/электронщик с пеленок знал, с первого взгляда понял и сам разобрался никого не спрашивая? (на самом деле это не совсем удачный пример, т.к. это знания общеобразовательной школы, в отличии от программирования)

даже не обязатьльно и разжевывать, а просто направить в нужное русло, литературу подсказать, вот, как вы, например.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
03.11.2012, 18:24
собственно чего я ругаюсь. просто многие моменты не имеет смысла объяснять без понимания реципиентом элементарных понятий. потому я выше и сказал, что сначала читать и понять букварь. а там уже и до атрибутов, препроцессора и прочего дело дойдет.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
03.11.2012, 18:41
z = a == b ? x : y; - если a=b, то z присвоить значение x. иначе - z присвоить значение y.

-> - это обращение к элементу структуры через указатель. указатель - это переменная (мож и константа) содержащая адрес указывающий на местоположение структуры, или на какую-нить другую переменную (int, char и прочее прочее).

typedef struct t_header { // объявляем структуру
uint8_t Fmt;
uint8_t Tgt;
uint8_t Src;
uint8_t Len;
} T_HEADER;

T_HEADER Header; // создаем переменную

T_HEADER *pHeader = &Header; создаем указатель и присваиваем ему адрес на нашу переменную

обращение ко всему этому.
либо так:
Header.Len = 0;

либо так:
pHeader->Len=0;

либо так:
(*pHeader).Len=0;

Результат во всех случаях будет один и тот же - обнулим Len.

можно нахуевертить как угодно: ((T_HEADER *)(&Header))->Len=0;

если переменная другого типа (инт и прочее):
int n1; // переменная раз
int n2; // переменная два

int *p; // указатель

p=&n1; // в p закидываем адрес переменной n1
*p=10; // присвоим переменной n1 значение 10
p=&n2; // в p закидываем адрес переменной n2
*p=20; // присвоим переменной n2 значение 20

а вот так еще:

p = (int *) &Header;
((T_HEADER *) p)->Len=10;

:) играться можно бесконечно
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
03.11.2012, 19:47
спасибо за расшифровку!

((T_HEADER *)(&Header))->Len=0;
вот в жизнь бы не догадался сам, что эта хуиверть просто обнуляет переменную...
вот зачем так делать в микроконтроллерах?
Ладно когда ОС с тысячами переменных, обьектов, подпрограмм...
что б понять эту строчку, нужно или закончить вуз по программированию, или десять лет проработать программистом...
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
03.11.2012, 19:49
нет. достаточно прочитать Букварь :)

ниче там сложного нет. вникнешь и будет все просто и понятно
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
05.11.2012, 11:00
Цитата Сообщение от ZoomyrJuk
Если конкретно:
1. Что делает оператор ->, как прочитать все выражение?
2.Такая запись есть почти во всех файлах библиотек стм, можно без них?
3. Как прочитать выражение? Понял, что вместо ossirt_param(expr) ставится выражение, а что оно делает... что за способ обозначениия подчеркивающими черточками - __LINE__?
4.Что значит вторая звездочка *((REG16 *)? Как прочитать выражение вцелом?
По пунктам:
1. Это обращение у элементам (членам, полям) структуры через указатель на данную структуру. Здесь уместно для начала прочитать учебник;
2. в библиотеках от st периферия (порты, таймеры, АЦП, ....) описаны как структуры. Поэтому в соответствующие функции в качестве аргумента передается адрес требуемой структуры;
3. __LINE__, __TIME__, __DATE__ - стандартные определения препроцессора;
4. (REG16 *) - явное приведение у типу указатель на тип данных REG16. Определение самого типа указано где-то в другом месте.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
05.11.2012, 14:05
Цитата Сообщение от ZoomyrJuk
Или вот, еще:
Код:
__attribute__ ((section(".co_stack")))

https://dl.dropbox.som/u/54652586/1.png
что значит эта запись?
Это значит, что данный объект пред[по]лагается уложить в секцию .co_stack
Букварь
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
05.11.2012, 14:19
Vanity Fair
ну, вы поняли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2012, 14:19
Помогаю со студенческими работами здесь

основы программирования
Перечень вопросов для подготовки к экзамену по дисциплине «Основы программирования» 1. Этапы решения задач с использованием ЭВМ. ...

Основы программирования
Помогите решить задачку) Заранее спасибо

Основы программирования
Ужасно хочу создавать свои програмы! Купил Делфи, пару книг.. Установил, запускаю.. Ничего не понятно.. кнопочки, цифорки.. :eek: ...

Основы алгоритмизации и программирования
Создайте проект для решения следующей задачи: Найти среднее значение двух чисел и заменить все элементы одномерного массива на чётных...

Основы алгоритмизации и программирования
здрасте. помоги решит проблему.(все 3 задачи,если можно с кратким объяснением))очень надо.заранее благодарю)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru