_RPT
, , _RPTF
, _RPTW
, _RPTFW
makra
Śledzi postęp aplikacji, generując raport debugowania (tylko wersja debugowania). Sufiks n
określa liczbę argumentów w args
elemencie i może mieć wartość 0, 1, 2, 3, 4 lub 5.
Składnia
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
Parametry
reportType
Typ raportu: _CRT_WARN
, _CRT_ERROR
lub _CRT_ASSERT
.
format
Ciąg kontrolki formatu używany do tworzenia komunikatu użytkownika.
args
Argumenty podstawienia używane przez format
.
Uwagi
Wszystkie te makra przyjmują reportType
parametry i format
. Ponadto mogą również przyjmować maksymalnie cztery kolejne argumenty, oznaczane przez numer dołączony do nazwy makra. Na przykład _RPT0
i _RPTF0
nie weź więcej argumentów _RPT1
i _RPTF1
weź arg1
wartości , _RPT2
i _RPTF2
weź arg1
i arg2
itd.
Makra _RPT
i _RPTF
są podobne do printf
funkcji, ponieważ mogą służyć do śledzenia postępu aplikacji podczas procesu debugowania. Jednak te makra są bardziej elastyczne niż printf
dlatego, że nie muszą być ujęte w #ifdef instrukcji, aby zapobiec wywoływaniu ich w kompilacji detalicznej aplikacji. Ta elastyczność jest osiągana przy użyciu _DEBUG
makra; _RPT
makra i _RPTF
są dostępne tylko wtedy, gdy flaga jest zdefiniowana _DEBUG
. Gdy _DEBUG
nie jest zdefiniowana, wywołania tych makr są usuwane podczas wstępnego przetwarzania.
Makra _RPTW
i _RPTFW
to wersje wieloznaczny tych makr. Są one podobne wprintf
i przyjmują ciągi szerokoznakowe jako argumenty.
Makra _RPT
powodują wywołanie _CrtDbgReport
funkcji w celu wygenerowania raportu debugowania z komunikatem użytkownika. Makra _RPTW
powodują wywołanie funkcji w celu wygenerowania _CrtDbgReportW
tego samego raportu z znakami szerokimi. Makra _RPTF
i _RPTFW
tworzą raport debugowania z plikiem źródłowym i numerem wiersza, w którym zostało wywołane makro raportu, oprócz komunikatu użytkownika. Komunikat użytkownika jest tworzony przez podstawianie arg[n]
argumentów w format
ciągu przy użyciu tych samych reguł zdefiniowanych przez printf
funkcję.
_CrtDbgReport
lub _CrtDbgReportW
generuje raport debugowania i określa jego lokalizacje docelowe na podstawie bieżących trybów raportu i pliku zdefiniowanego dla reportType
programu . Funkcje _CrtSetReportMode
i _CrtSetReportFile
służą do definiowania miejsc docelowych dla każdego typu raportu.
_RPT
Jeśli makro jest wywoływane i _CrtSetReportMode
_CrtSetReportFile
nie zostało wywołane, komunikaty są wyświetlane w następujący sposób:
Typ raportu | Miejsce docelowe danych wyjściowych |
---|---|
_CRT_WARN |
Tekst ostrzeżenia nie jest wyświetlany. |
_CRT_ERROR |
Okno podręczne. Tak samo jak w przypadku _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); określenia. |
_CRT_ASSERT |
Tak samo jak _CRT_ERROR . |
Gdy miejsce docelowe jest oknem komunikatu debugowania, a użytkownik wybierze przycisk _CrtDbgReport
Ponów próbę lub _CrtDbgReportW
zwróci wartość 1. Ta wartość zwracana powoduje, że te makra uruchamiają debuger, jeśli debugowanie just in time (JIT) jest włączone. Aby uzyskać więcej informacji na temat używania tych makr jako mechanizmu obsługi błędów debugowania, zobacz Makra do raportowania.
Istnieją dwa inne makra, które generują raport debugowania. Makro _ASSERT
generuje raport, ale tylko wtedy, gdy argument wyrażenia zwróci wartość FALSE
. _ASSERTE
jest dokładnie taki jak _ASSERT
, ale zawiera wyrażenie, które nie powiodło się w wygenerowanym raporcie.
Wymagania
Makro | Wymagany nagłówek |
---|---|
_RPT Makra |
<crtdbg.h> |
_RPTF Makra |
<crtdbg.h> |
_RPTW Makra |
<crtdbg.h> |
_RPTFW Makra |
<crtdbg.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.
Mimo że te makra są dostępne w przypadku dołączenia crtdbg.h
elementu do uruchomienia, aplikacja musi łączyć się z jedną z bibliotek debugowania, ponieważ te makra nazywają inne funkcje czasu wykonywania.
Przykład
Zobacz przykład w _ASSERT
artykule.