![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
kuler |
![]()
Сообщение
#1
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
есть enum EnThreadState {tsNone, tsGetEquipmentStringList}
хотелось бы чтобы в коде можно было получить строку (скажем char*) по элементу, то есть char* str = func(tsNone) и теперь str = "tsNone". Не знаете? |
|
|
![]() |
AD |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
есть enum EnThreadState {tsNone, tsGetEquipmentStringList} хотелось бы чтобы в коде можно было получить строку (скажем char*) по элементу, то есть char* str = func(tsNone) и теперь str = "tsNone". Не знаете? На ум приходит два метода: 1) switch case ![]() 2) использование контейнера map |
|
|
kuler |
![]()
Сообщение
#3
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
AD,
это все понятно но надо без лишнего геморроя |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
kuler, а почему тема здесь, ты хочешь средствами стандартной библиотеки С?
И слово команда в заголовке сбивает с толку. |
|
|
kuler |
![]()
Сообщение
#5
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
ViGOur |
![]()
Сообщение
#6
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Не совсем, это скороей языковые обороты, в моем варианте препроцессорные:
![]() Сообщение отредактировал ViGOur - 16.1.2009, 15:25 |
|
|
kuler |
![]()
Сообщение
#7
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur,
а в чем смысл? #sz? _tmain? |
|
|
ViGOur |
![]()
Сообщение
#8
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Ты компилировал пример?
В нем возвращается имя твоего параметра в строковом представлении... #sz - строковое представление твоего параметра _tmain - сгенерировала студия, переименуешь в main ничего не случится. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, я забыл, а что означает одна решетка в макросах.
Две я помню - это сцепление строк. |
|
|
ViGOur |
![]()
Сообщение
#10
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Две я помню - это сцепление строк. Одним словом - конкатенация.Не помню как это называется, но помню, что так нужно делать, если нужно получить не значение переменной, а её имя, когда не знаешь его, а очень нужно. ![]() Разумеется это относится к макросам. Думается мне, что место этой теме в технике программирования, как считаешь kuler? Просто компиляторами тут пока даже и не пахнет. Сообщение отредактировал ViGOur - 16.1.2009, 16:27 |
|
|
kuler |
![]()
Сообщение
#11
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Andrew Selivanov |
![]() ![]()
Сообщение
#12
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
Можно еще вот так (подсмотрено на http://stackoverflow.com/questions/201593/...-enum-to-string)
содержимое файлика colours.def
ну и сам код)
Ну и про макросы обобщим: # - в строку #@ - в char ## - слепить |
|
|
ViGOur |
![]()
Сообщение
#13
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#14
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, я думаю это все таки к компиляторной теме ближе.
название темы немного перефразировал |
|
|
kuler |
![]()
Сообщение
#15
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur,
все просек, # рулит. |
|
|
ViGOur |
![]()
Сообщение
#16
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kuler |
![]()
Сообщение
#17
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
стоп!
а так не работает:
|
|
|
void* |
![]()
Сообщение
#18
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
kuler, все правильно, так и должно работать
|
|
|
kuler |
![]()
Сообщение
#19
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
ViGOur |
![]()
Сообщение
#20
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#21
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
kuler, может ты цель раскажешь, может быть решение будет и попроще.
|
|
|
kuler |
![]()
Сообщение
#22
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kuler |
![]()
Сообщение
#23
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#24
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
kuler, пользуйся тэгом code (
![]() |
|
|
Tonal |
![]()
Сообщение
#25
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
можно ещё воспользоваться магией конкретного компилятора.
![]() Вот код работающий на mingw 3.4.5:
Под другой компилятор придётся найти соответствующий макрос вместо __PRETTY_FUNCTION__ (__FUNCTION__ есть почти везде) и изменить код разбора строки. ![]() К сожалению обратную функцию - по имени вывести значение сделать изрядно сложнее. ![]() Сообщение отредактировал Tonal - 19.1.2009, 13:08 |
|
|
Andrew Selivanov |
![]() ![]()
Сообщение
#26
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#27
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
при использовании #define X(a, b ) #b строковые значения выводятся в ковычках, т.е. как записаны в colours.def Цитата color = "Red" color = "Gray" при использовании #define X(a, b ) b Цитата color = Red color = Gray классная штука. Сообщение отредактировал kwisp - 22.1.2009, 9:59 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.6.2025, 5:38 |