31.01.2018, 07:26
|
#1
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Обратный слеш "\" в си
Встретился в примерах кода обратный слеш,сильно не понял для чего установили тут.
Понимаю в строке экранирование спец символов,а тут?
PHP код:
|
// Макрос инициализации
#define GPIO_INIT(GPIO_PORT,GPIO_PIN,GPIO_MODE,GPIO_OUTTYP E,GPIO_PULL,GPIO_SPEED,GPIO_ALTFUNC)\
{\
GPIO_PORT-›MODER = (GPIO_PORT-›MODER & ~(3UL ‹‹ (GPIO_PIN * 2UL)))\
| (GPIO_MODE ‹‹ (GPIO_PIN * 2UL));\
GPIO_PORT-›OTYPER = (GPIO_PORT-›OTYPER & ~(1UL ‹‹ (GPIO_PIN)))\
| (GPIO_OUTTYPE ‹‹ (GPIO_PIN));\
GPIO_PORT-›OSPEEDR = (GPIO_PORT-›OSPEEDR & ~(3UL ‹‹ (GPIO_PIN * 2UL)))\
| (GPIO_SPEED ‹‹ (GPIO_PIN * 2UL));\
GPIO_PORT-›PUPDR = (GPIO_PORT-›PUPDR & ~(3UL ‹‹ (GPIO_PIN * 2UL)))\
| (GPIO_PULL ‹‹ (GPIO_PIN * 2UL));\
GPIO_PORT-›AFR[GPIO_PIN / 8] = (GPIO_PORT-›AFR[GPIO_PIN / 8] & ~(15UL ‹‹ ((GPIO_PIN & 0x7) * 4)))\
| ((GPIO_ALTFUNC) ‹‹ (GPIO_PIN & 0x7) * 4);\
}
|
__________________
Глаза боятся,а руки делают.
|
|
|
|
31.01.2018, 08:04
|
#2
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Обратный слеш "\" в си
Чтобы вместить его на экран по горизонтали и "остаться в одной строчке", т.к. в С макросы м.б. только однострочные. Это эквивалентно одной строчке кода, т.к. последовательность обр слеш - перевод строки удаляется лексическим анализатором С. Кажется, даже пробел не вставляется, но точно не помню.
|
|
|
|
31.01.2018, 08:43
|
#3
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Обратный слеш "\" в си
Спасибо,что то подобное есть в python.
__________________
Глаза боятся,а руки делают.
|
|
|
|
31.01.2018, 22:31
|
#4
|
Частый гость
Регистрация: 10.09.2010
Адрес: Резиновая
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 14 раз(а) в 12 сообщении(ях)
|
Re: Обратный слеш "\" в си
Сообщение от CERGEI1982
|
..,а тут?...
|
уже прозвучало - перенос на следующую строчку.
главное из таких наклонных чёрточек не лепить красоту в коментариях - можно нечаянно закомментировать следующую строчку = стандартная детская болезнь в программировании..
удачи вам
(круглый)
|
|
|
Сказали "Спасибо" kolobok0
|
|
|
31.01.2018, 22:55
|
#5
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
|
Re: Обратный слеш "\" в си
ampy, там немного иначе с удалением красоты для глаза в компиляторе - он таки все не латеральное предварительно от лишнего в виде пробелов, табуляции вычищает (где можно и нужно) и конечно комментарии.
Потом просто удаляются найденные / в конце строки, вместе с концом строки.
Собственно этот вариант подхода к читаемой человеком записи кода почти везде наверное используется - точно что de facto, возможно даже и de jure (тут просто занудства не хватило для выяснения ).
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 01.02.2018 в 06:51.
|
|
|
|
01.02.2018, 04:23
|
#6
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Обратный слеш "\" в си
mike-y-k, я мало что понял... Выражение тоже разобрать не могу.
Насчет пробелов это важно если, скажем, надо перенести ну очень длинное
имя переменной или функции или макроса... Вряд ли кому надо. Или нужно
записать длинную строку без лишних пробелов, а про объединение строк типа
"строка1" "строка2" человек забыл.
|
|
|
|
01.02.2018, 06:43
|
#7
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
|
Re: Обратный слеш "\" в си
ampy, регулярное выражение для Perl как иллюстрация (убрал как излишек ).
В исходном коде gcc после первичного удаления из потока всего лишнего "/" в конце строки удаляется вместе с разделителем строк - две строки просто склеиваются…
Этот способ присутствует практически везде для читаемости кода, правда с некоторыми мелкими нюансами в каждой реализации. Типа возможности переноса литералов.
В справочнике по синтаксису все подробно описано…
PS Для объединения строк там вроде как оператор объединения должен стоять…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 01.02.2018 в 06:52.
|
|
|
|
01.02.2018, 07:44
|
#8
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Обратный слеш "\" в си
Сообщение от mike-y-k
|
PS Для объединения строк там вроде как оператор объединения должен стоять…
|
Не, это в макросах, для объединения имен в одно большое мегаимя, типа
#define makevar(name, age) name ## age
int makevar(Mathilda, 45) = 100;
|
|
|
|
01.02.2018, 08:53
|
#9
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
|
Re: Обратный слеш "\" в си
ampy, ну этот вариант уже сильное извращение .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:09.
|
|