Не понятный #define |
Здравствуйте, гость ( Вход | Регистрация )
Не понятный #define |
RazrFalcon |
23.4.2011, 16:19
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Имеем:
В коде используем так: Все работает.Вопрос вот в чем: что это вообще такое? Сообщение отредактировал RazrFalcon - 23.4.2011, 16:19 |
|
|
Litkevich Yuriy |
23.4.2011, 16:40
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
какая-то химия с кодировками.
В каком формате (кодировке) хранятся данные в tag->title() ? |
|
|
RazrFalcon |
23.4.2011, 17:03
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
virtual String ?!
http://developer.kde.org/~wheeler/taglib/a...Lib_1_1Tag.html |
|
|
novichkov |
24.4.2011, 9:29
Сообщение
#4
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Эти дефайны - чуть переделанные из исходников TagLib. TagLib хранит строки как utf-16, Qt - как utf8.
tag->title() - перекрытый в потомках метод. Порылся в исходниках. Такие дефайны, наверное, будут быстрее:
|
|
|
RazrFalcon |
24.4.2011, 10:05
Сообщение
#5
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Дело немного не в том.
Мне интересно как, к примеру, написать самому такие же дефайны. Я даже не знаю на какую тему гуглить. Эти дефайны больше похожи на функцию. |
|
|
novichkov |
24.4.2011, 15:44
Сообщение
#6
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Если в классе часто нужно гонять строки из TagLib в Qt и обратно, логично использовать функции-конструкторы QString::fromStdWString(s.toWString()) и TagLib::String(s.toStdWString()). А так как они везде пишутся совершенно одинаково - заменяем их соответствующим коротким макросом-синонимом.
Сообщение отредактировал novichkov - 24.4.2011, 15:45 |
|
|
Litkevich Yuriy |
24.4.2011, 16:17
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
utf-16, Qt - как utf8. Видимо наоборот, т.к. Qt хранит в UTF-16!Мне интересно как, к примеру, написать самому такие же дефайны. Я даже не знаю на какую тему гуглить. на тему #define #define MACRO(arg) some_code + arg Аргумент макроса будет подставлен в выражение. Аргументов может быть много, их разделяют запятыми. |
|
|
RazrFalcon |
24.4.2011, 16:41
Сообщение
#8
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Теперь ясно. Спасибо.
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 3:08 |