С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

Макрос TRACE

11.07.2015, 17:46. Показов 8812. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здорова!

Часто вижу в коде TRACE, но что то ничего не пойму что он делает, вот есть код:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using std::cout;
#include <afxwin.h>
 
int main()
{
    TRACE("Hellow world!\n");
 
    return 0;
}
Компилирую и ничего не происходит?
Запускаю в режиме отладки тоже ничего не происходит и ничего не выводится хз. что это?

Добавлено через 3 минуты
Короче при компиляции этот макрос компилируется в ничего. Его можно использовать при отладке, только что то отладчик мне ниче не показывает.

Добавлено через 16 минут
Почему я от сделал такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using std::cout;
#include <afxwin.h>
 
void f(double a)
{
    TRACE("Переменная %d\r\n",a);
}
 
int main()
{
    TRACE("Hellow world!\r\n");
    f(0.35);
    
 
    return 0;
}
В функцию f передаю 0.35 и вывожу его в вывод с помощью TRACE и вывелось большое число
"test.exe": Загружено: "C:\Windows\System32\dwmapi.dll", Невозможно найти или открыть файл PDB
Hellow world!
Переменная 1717986918
"test.exe": Выгружено: "C:\Windows\System32\dwmapi.dll"

Что это за фигня? Почему так происходит? Если ставлю 35, то 0 выводится

Добавлено через 1 минуту
ладно нужно %f писать вместо %d
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2015, 17:46
Ответы с готовыми решениями:

Если макрос на VBA переписать на С++, то макрос станет работать быстрее?
Всем привет!) У меня есть макрос написанный в Екселе на VBA, если его переписать на С++ , то макрос станет работать быстрее? ...

Реализуйте макрос trace для трассировки
ДАННУЮ ПРОГРАММУ НЕОБХОДИМО РЕАЛИЗОВАТЬ НА SCHEME! Реализуйте макрос trace для трассировки. Трассировка — способ отладки, при котором...

Почему макрос TRACE не может вывести строку?
Почему макрос TRACE не может вывести строку? Вылетает неопознаная ошибка. CString sss(&quot;&lt;H2 class=\&quot;b-post__title...

3
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.07.2015, 17:54  [ТС]
Цитата Сообщение от iRomul Посмотреть сообщение
потому что в формате строки стоит %d, а передаётся double
А в этом макросе такие же параметры как и в printf

Добавлено через 3 минуты
Вычитал что макросов TRACE много бывает типо TRACE0,TRACE1,TRACE2 и т.д. типо 0 это без параметров 2 это 2 параметра, а кто небудь его использует?
0
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
11.07.2015, 18:00
Цитата Сообщение от ninja2 Посмотреть сообщение
А в этом макросе такие же параметры как и в printf
Скорее всего это обёртка над fprintf или подобным.
Если верить документации, то сообщение выводится в отладчик. Если разрабатываете в VS, то стоит глянуть панель вывода.

Добавлено через 3 минуты
Цитата Сообщение от ninja2 Посмотреть сообщение
Вычитал что макросов TRACE много бывает типо TRACE0,TRACE1,TRACE2 и т.д. типо 0 это без параметров 2 это 2 параметра
Выходит, что да, но в доках в этим макросам указано, что они являются устаревшими, и рекомендуется писать с помощью ATLTRACE2
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.07.2015, 18:04  [ТС]
Цитата Сообщение от iRomul Посмотреть сообщение
Скорее всего это обёртка над fprintf или подобным.
Нет там можно посмотреть вот определение:
C++
1
#define TRACE ATLTRACE
для 0 и 3
C++
1
2
3
4
#define TRACE0(sz)              TRACE(_T("%s"), _T(sz))
#define TRACE1(sz, p1)          TRACE(_T(sz), p1)
#define TRACE2(sz, p1, p2)      TRACE(_T(sz), p1, p2)
#define TRACE3(sz, p1, p2, p3)  TRACE(_T(sz), p1, p2, p3)
Определение ATLTRACE
C++
1
#define ATLTRACE ATL::CTraceFileAndLineInfo(__FILE__, __LINE__)
И само определение CTraceFileAndLineInfo
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
_trace.TraceV(m_pszFileName, m_nLineNo, dwCategory, nLevel, pszFmt, ptr);
        va_end(ptr);
    }
#pragma warning(pop)
 
#pragma warning(push)
#pragma warning(disable : 4793)
    void __cdecl operator()(
        _In_z_ const char *pszFmt, 
        ...) const
    {
        va_list ptr; va_start(ptr, pszFmt);
        ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, atlTraceGeneral, 0, pszFmt, ptr);
        va_end(ptr);
    }
#pragma warning(pop)
 
#pragma warning(push)
#pragma warning(disable : 4793)
    void __cdecl operator()(
        _In_z_ const wchar_t *pszFmt, 
        ...) const
    {
        va_list ptr; va_start(ptr, pszFmt);
        ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, atlTraceGeneral, 0, pszFmt, ptr);
        va_end(ptr);
    }
#pragma warning(pop)
 
private:
    /* unimplemented */
    CTraceFileAndLineInfo &__cdecl operator=(_In_ const CTraceFileAndLineInfo &right);
 
    const char *const m_pszFileName;
    const int m_nLineNo;
};


Добавлено через 2 минуты
Цитата Сообщение от iRomul Посмотреть сообщение
Выходит, что да, но в доках в этим макросам указано, что они являются устаревшими, и рекомендуется писать с помощью ATLTRACE2
Та пофигу макрос как был так он и будет в новых версиях работать, это ж специально сделали как бы инкапсуляция макросом, так что можно и старое использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2015, 18:04
Помогаю со студенческими работами здесь

F7 Trace Into
Не пойму что произошло и в какой момент. Но при нажатии на F7 у меня помимо моих модулей начали прогоняться еще модули EhLib? Откуда такая...

Trace ICMP
Здравствуйте! Передо мной встала задача: Написать свою утилиту trace, чисто используя IP-пакеты, формировать все ICMP...

Trace CME
Уважаемые знатоки, Подскажите как отследить звонок на мой voice gateway? Gateway подключен по sip с PSTN. Все дозваниваются из города...

Trace и Debug
Здравствуйте, в чем разница между Trace и Debug? почему у меня при сохранении проекта выскакивает окно сохранить отчет, как отменить?

Debug/Trace
Научите меня использовать Debug/Trace для обычного массива и коллекции ArrayList, чтобы можно было просматривать в консоли (для обычного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru