Easyelectronics.ru

Электроника для всех
Текущее время: 27 июн 2017, 12:08

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



    • The World's Cheapest PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

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

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

Код:
__FILENAME_H__


Кто-то пишет

Код:
FILENAME_


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

_________________
http://eax.me/


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

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


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

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

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


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

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

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


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

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


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

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


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

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

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