Easyelectronics.ru

Электроника для всех
Текущее время: 24 май 2018, 22:47

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 307 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13
Автор Сообщение
 Заголовок сообщения: Re: Вопрос по Си
СообщениеДобавлено: 06 фев 2017, 14:32 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2578
Вы можете написать хоть
Код:
#ifndef BLA_BLA_BLA_O_LO_LO
#define BLA_BLA_BLA_O_LO_LO

...

#endif

и тоже будет работать.
define создает идентификатор, и соответствующую ему последовательность символов (если указана). В данном случае вы создаете идентификатор BLA_BLA_BLA_O_LO_LO т.к. ранее он нигде не определен, т.е. проверка #ifndef (if not defined) возвращает true. В следующем файле, эта проверка уже не пройдет, т.к. идентификатор создан ранее, и тем самым исключится ошибка множественного определения функций, переменных и прочего описанного в .h-файле.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по Си
СообщениеДобавлено: 06 фев 2017, 14:39 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2016, 00:04
Сообщения: 212
Откуда: Россия, Москва
Имя может быть произвольным. Пытаются подобрать такое, чтобы оно вряд ли встречалось где-то еще. Лично я обычно пишу что-то в стиле:

Код:
__FILENAME_H__


Кто-то пишет

Код:
FILENAME_


или еще как-то. Кому как нравится.

_________________
https://eax.me/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по Си
СообщениеДобавлено: 06 фев 2017, 15:06 
Заглядывает иногда

Зарегистрирован: 07 июн 2016, 19:24
Сообщения: 63
Понятно. Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по Си
СообщениеДобавлено: 06 фев 2017, 15:11 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2425
Откуда: Санкт-Петербург
Пофиг. Этот код вообще сто лет как никто руками не пишет, его IDE сразу вставляет. Некоторые вообще туда GUID впендюривают - чтобы точно не совпало с тем, что в другом хедере (требований к этому имени всего два: чтобы получался корректный идентификатор и чтобы ни с чем не конфликтовало).

Альтернатива - утки (c). Никаких ifdef-define-..., просто пишете в начале хедера
Код:
#pragma once
и не паритесь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы о С.
СообщениеДобавлено: 21 фев 2017, 18:11 
Заглядывает иногда

Зарегистрирован: 07 июн 2016, 19:24
Сообщения: 63
Приветствую!

Каким образом можно записать в 16-битную переменную две 8-битные?
Например, два состояния порта: один раз нажимаем на кнопку запись идёт в старшую часть, другой - в младшую (или наоборот - всё равно). Делаю так, но это не работает:

Код:
uint16_t data=0;

if (k==0) data = PINB;      
else
{
        data << 8;
   data = PINB;
   k=0;
   goto out;
}
k++;


Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы о С.
СообщениеДобавлено: 21 фев 2017, 18:32 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 541
Откуда: Германия
Код:
uint16_t data=0;

if (k==0) data = PINB;      
else
{
        data <<= 8;
   data |= PINB;
   k=0;
   goto out;
}
k++;


(остальной код не комментирую)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы о С.
СообщениеДобавлено: 21 фев 2017, 18:49 
Заглядывает иногда

Зарегистрирован: 07 июн 2016, 19:24
Сообщения: 63
Всё заработало! Конечно, ИЛИ надо было делать... и равно забыл. Спасибо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 307 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB