Russian Qt Forum
Сентябрь 30, 2024, 22:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Макрос для лаконичного отображения отладочного вывода  (Прочитано 10497 раз)
Bepec
Гость
« Ответ #15 : Октябрь 17, 2012, 15:13 »

Простейший цикл от 1 до 10000. Измеряется elapsed(QTime).

Ваш вариант        1215-1374    мс. (рандомно)
Просто qDebug()    800-1100     мс.
Без вывода            0                мс Веселый

Единичный вызов занимает на 1-3 мс больше, чем qDebug(). Видимо RegExp подтормаживает.

Вывод: Можно использовать там, где нет особых требований. Да и подходит оно больше для критических Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #16 : Октябрь 17, 2012, 15:14 »

Поможет, попробуйте мой пример, он работает в mingw/msvc

Почему-то мне всегда казалось что __VA_ARGS__ содержит неименованые аргументы, переданные макросу в скобках (причем вместе с запятыми между ними). В данном примере __VA_ARGS__ не нужен, как и ## перед ним (зачем оно тут, кстати?)
вот именно поэтому я и задал свой вопрос. чтобы __VA_ARGS__ использовались, использование макроса должно быть таким: DEBUG("hello") (в текущей реализации ничего кроме строки не сработает). ## конкатенирует параметры с макросом, нужно для строк.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #17 : Октябрь 17, 2012, 15:16 »

Поможет, попробуйте мой пример, он работает в mingw/msvc

Почему-то мне всегда казалось что __VA_ARGS__ содержит неименованые аргументы, переданные макросу в скобках (причем вместе с запятыми между ними). В данном примере __VA_ARGS__ не нужен, как и ## перед ним (зачем оно тут, кстати?)
вот именно поэтому я и задал свой вопрос. чтобы __VA_ARGS__ использовались, использование макроса должно быть таким: DEBUG("hello") (в текущей реализации ничего кроме строки не сработает). ## конкатенирует параметры с макросом, нужно для строк.

разве ## конкатенируют не левую и правую часть?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Октябрь 17, 2012, 15:39 »

Я тоже заинтересовался, глянул гуглу
http://stackoverflow.com/questions/5588855/standard-alternative-to-gccs-va-args-trick
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #19 : Октябрь 17, 2012, 16:01 »

действительно, немного перепутал.

но суть в том, что ТС непонятно зачем приплёл эти __VA_ARGS__ в свой макрос
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gogi
Гость
« Ответ #20 : Октябрь 18, 2012, 10:23 »

Я думаю у каждого первого, второго и третьего программиста уже были такие макросы. (Были, ибо макросы - это плохо по мнению большинства).

Не были, а есть. Потому что имя функции и место в коде можно узнать только от препроцессора.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 23.