|
Можно ли в keil разбить #define на несколько строк ? |
|
|
|
 |
Ответов
|
Sep 27 2013, 13:35
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(megajohn @ Sep 27 2013, 16:53)  Код #define VOLTAGE_RANGE_1 {\ PWR->CR &=~ PWR_CR_VOS_1;\ PWR->CR |= PWR_CR_VOS_0; } Спасибо ! Цитата(MrYuran @ Sep 27 2013, 17:23)  и обязательно в скобках do{}while(0) Не понимаю о чём речь. Объясните пожалуйста. Что в скобках ?
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Sep 27 2013, 14:48
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(MiklPolikov @ Sep 27 2013, 17:35)  Не понимаю о чём речь. Объясните пожалуйста. Что в скобках ? Речь вот о чём. При использовании VOLTAGE_RANGE_1 в Вашей программе будет подставлено (содержимое скобок опустил): {...} Обычно, при оформлении программ, после VOLTAGE_RANGE_1 ставит точку с запятой, чтобы было похоже на "настоящий" оператор. Например, так: Код if(xxx) VOLTAGE_RANGE_1; После подстановки значения будет Код if(xxx) {...}; В данном примере "лишняя" точка с запятой не помешает, но - что получится при такой конструкции ? Код if(xxx) VOLTAGE_RANGE_1; else .... Вот тут точка с запятой окажется лишней. Чтобы она лишней не оказалась, то обрамляют фигурные скобки оператором do ... while(0) Код #define VOLTAGE_RANGE_1 do {\ PWR->CR &=~ PWR_CR_VOS_1;\ PWR->CR |= PWR_CR_VOS_0; } while(0)
|
|
|
|
|
Sep 27 2013, 14:56
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(Палыч @ Sep 27 2013, 18:48)  Речь вот о чём. При использовании VOLTAGE_RANGE_1 в Вашей программе будет подставлено (содержимое скобок опустил): {...} Обычно, при оформлении программ, после VOLTAGE_RANGE_1 ставит точку с запятой, чтобы было похоже на "настоящий" оператор. Например, так: Код if(xxx) VOLTAGE_RANGE_1; После подстановки значения будет Код if(xxx) {...}; В данном примере "лишняя" точка с запятой не помешает, но - что получится при такой конструкции ? Код if(xxx) VOLTAGE_RANGE_1; else .... Вот тут точка с запятой окажется лишней. Чтобы она лишней не оказалась, то обрамляют фигурные скобки оператором do ... while(0) Код #define VOLTAGE_RANGE_1 do {\ PWR->CR &=~ PWR_CR_VOS_1;\ PWR->CR |= PWR_CR_VOS_0; } while(0) Спасибо!
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
Сообщений в этой теме
MiklPolikov Можно ли в keil разбить #define на несколько строк ? Sep 27 2013, 12:48 MrYuran и обязательно в скобках do{}while(0) Sep 27 2013, 13:23 A. Fig Lee Цитата(MrYuran @ Sep 27 2013, 09:23) и об... Sep 28 2013, 02:14 Raven Цитата(MrYuran @ Sep 27 2013, 17:23) и об... Sep 28 2013, 05:41 Allregia А почему не делать так:
Код__INLINE void VOLTAGE_R... Sep 27 2013, 16:55 ViKo А я иногда делаю так
Код#define WDELAY_RESTART... Sep 27 2013, 17:55 aaarrr Цитата(ViKo @ Sep 27 2013, 21:55) А я ино... Sep 27 2013, 19:14 Allregia Цитата(aaarrr @ Sep 27 2013, 21:14) do {}... Sep 27 2013, 19:21  aaarrr Цитата(Allregia @ Sep 27 2013, 23:21) Да,... Sep 27 2013, 19:28 ViKo Цитата(aaarrr @ Sep 27 2013, 22:14) Чудов... Sep 27 2013, 19:34  aaarrr Цитата(ViKo @ Sep 27 2013, 23:34) В данно... Sep 27 2013, 19:39   ViKo Цитата(aaarrr @ Sep 27 2013, 22:39) Тогда... Sep 27 2013, 19:41    aaarrr Цитата(ViKo @ Sep 27 2013, 23:41) На то д... Sep 27 2013, 19:44     ViKo Цитата(aaarrr @ Sep 27 2013, 22:44) Т.е. ... Sep 27 2013, 19:54     ViKo Цитата(aaarrr @ Sep 27 2013, 22:44) Т.е. ... Sep 27 2013, 20:04      aaarrr Цитата(ViKo @ Sep 28 2013, 00:04) Не всег... Sep 27 2013, 20:09 aaarrr "Логичнее"? А что ведет себя совсем инач... Sep 27 2013, 20:01 ViKo Цитата(aaarrr @ Sep 27 2013, 23:01) ... Sep 27 2013, 20:09 aaarrr Этот "набор выражений" и ведет себя как ... Sep 27 2013, 20:19 ViKo Цитата(aaarrr @ Sep 27 2013, 23:19) Этот ... Sep 27 2013, 20:29  aaarrr Цитата(ViKo @ Sep 28 2013, 00:29) Да ну? ... Sep 27 2013, 20:50   ViKo Цитата(aaarrr @ Sep 27 2013, 23:50) Понят... Sep 28 2013, 07:47    igorle Цитата(ViKo @ Sep 28 2013, 10:47) Хорошо,... Sep 28 2013, 08:44     ViKo Цитата(igorle @ Sep 28 2013, 11:44) Будет... Sep 28 2013, 08:58      igorle Цитата(ViKo @ Sep 28 2013, 11:58) Точка с... Sep 28 2013, 09:22       ViKo Цитата(igorle @ Sep 28 2013, 12:08) Такой... Sep 28 2013, 09:34       Ruslan1 Цитата(igorle @ Sep 28 2013, 12:22) Rusla... Sep 28 2013, 11:08        Flood Цитата(Ruslan1 @ Sep 28 2013, 15:08) Это ... Sep 28 2013, 11:50         igorle Поддерживаю предыдущего оратора.
И еще.
"фун... Sep 28 2013, 15:38          ViKo Цитата(igorle @ Sep 28 2013, 18:38) Напри... Sep 29 2013, 19:01           Flood Цитата(ViKo @ Sep 29 2013, 23:01) Что так... Sep 29 2013, 20:03       A. Fig Lee Цитата(igorle @ Sep 28 2013, 05:22) А выв... Sep 29 2013, 20:22        aaarrr Цитата(A. Fig Lee @ Sep 30 2013, 00:22) П... Sep 29 2013, 20:56        ig_z QUOTE (A. Fig Lee @ Sep 29 2013, 23:22) Н... Sep 29 2013, 21:16    Ruslan1 Прочитал все написанное но так и не понял почему т... Sep 28 2013, 09:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|