Easyelectronics.ru

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

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



    • Изготовление печатных плат
    • Создание принципиальных схем и проектирование печатных плат
    • Симуляция работы на spice моделях
    • Просмотр GERBER файлов

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

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

Код:
__FILENAME_H__


Кто-то пишет

Код:
FILENAME_


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

_________________
http://eax.me/


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

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


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

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

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


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

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

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


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

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


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

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


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

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

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