Easyelectronics.ru

Электроника для всех
Текущее время: 16 дек 2017, 00:49

Часовой пояс: 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
Сообщения: 2425
Вы можете написать хоть
Код:
#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
Сообщения: 172
Откуда: Россия, Москва
Имя может быть произвольным. Пытаются подобрать такое, чтобы оно вряд ли встречалось где-то еще. Лично я обычно пишу что-то в стиле:

Код:
__FILENAME_H__


Кто-то пишет

Код:
FILENAME_


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

_________________
http://eax.me/


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

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


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

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

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


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

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

Каким образом можно записать в 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
Сообщения: 488
Откуда: Германия
Код:
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
Сообщения: 51
Всё заработало! Конечно, ИЛИ надо было делать... и равно забыл. Спасибо!


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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