Easyelectronics.ru

Электроника для всех
Текущее время: 24 янв 2021, 11:25

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

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

Код:
__FILENAME_H__


Кто-то пишет

Код:
FILENAME_


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

_________________
https://eax.me/


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

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


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

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

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


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

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

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


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


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


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

Сейчас этот форум просматривают: Katz


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

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

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