|
C, вставить символ внутри строки |
|
|
|
Apr 26 2013, 12:40
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Допустим, есть строка Код static const uint8_t *TestText = "Test string"; Хочу вставить в середину специальный символ, допустим \x18. Откуда он возьмется, не важно (сам нарисую). Это можно сделать так: Код static const uint8_t *TestText = "Test\x18string"; Но мне не нравятся эти ничего не говорящие числа. Как можно подменить с помощью #define символ, чтобы принимался внутри строки? И попутно, как вставить символ, например, 'A', внутрь строки?
|
|
|
|
|
 |
Ответов
|
Apr 26 2013, 12:50
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
Код #define MY_SYMBOL_NAME "\x18" static const uint8_t *TestText = "Test" MY_SYMBOL_NAME "string"; Строковые литералы идущие подряд через withespace склеиваются компилятором в один литерал. Так можно засунуть дефайн внутрь строки, но в дефайне может быть только строковый литерал.
|
|
|
|
|
Apr 26 2013, 13:24
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(neiver @ Apr 26 2013, 15:50)  Код #define MY_SYMBOL_NAME "\x18" static const uint8_t *TestText = "Test" MY_SYMBOL_NAME "string"; Получилось, спасибо! И без пробелов тоже склеилось. Цитата(winipuh @ Apr 26 2013, 15:52)  Или еще есть оператор препроцессора # - "превращения" в строку. И как применить...? Если внутри строки написать "Test"#MY_SYMBOL"string", Keil ругается error: #10: "#" not expected here
|
|
|
|
|
Apr 26 2013, 13:30
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(ViKo @ Apr 26 2013, 17:24)  Получилось, спасибо! И без пробелов тоже склеилось.
И как применить...? Если внутри строки написать "Test"#MY_SYMBOL"string", Keil ругается error: #10: "#" not expected here ## Правда, результат в данном случае будет не такой, как надо. Вот если использовать вложенные макросы, типа #define CONCAT(a,b ) a##b тогда можно попробовать CONCAT("Test", MY_STRING)
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
Сообщений в этой теме
ViKo C, вставить символ внутри строки Apr 26 2013, 12:40 winipuh Чем конкатенация строк на этапе компиляции не устр... Apr 26 2013, 12:52 ViKo Тут вот еще какая засада. Хотел спецсимволы описат... Apr 26 2013, 18:53 ViKo Опять не могу сообщение отправить, начиная с полун... Apr 27 2013, 08:31 Сергей Борщ QUOTE (ViKo @ Apr 27 2013, 11:31) Вопрос ... Apr 27 2013, 15:15 winipuh Проблема тут в том, что Вы хотите выполнить конкат... Apr 27 2013, 20:37 ViKo Цитата(winipuh @ Apr 27 2013, 23:37) Проб... Apr 29 2013, 04:27  winipuh Цитата(ViKo @ Apr 29 2013, 08:27) Так уже... Apr 29 2013, 11:26   ViKo Цитата(winipuh @ Apr 29 2013, 14:26) Вы м... Apr 29 2013, 11:33 adnega Если сильных возражений не будет, то хотелось бы в... Apr 29 2013, 12:04 AHTOXA Цитата(adnega @ Apr 29 2013, 18:04) Но мо... Apr 29 2013, 17:56 neiver Можно и строку в кавычках в дефайн передать, тольк... Apr 29 2013, 13:49 adnega Цитата(neiver @ Apr 29 2013, 17:49) Можно... Apr 29 2013, 17:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|