Sdílet prostřednictvím


Specifikátory formátu v jazyce C++

Při ladění nativního kódu v okně Sledování nebo dialogovém okně QuickWatch můžete změnit formát, ve kterém se zobrazí hodnota, pomocí specifikátorů formátu.

(Většina specifikátorů formátu jsou pouze pro nativní kód, ale jazyk Visual C# má omezenou sadu specifikátorů formátu.Viz Specifikátory formátu v jazyce C#.)

Specifikátory formátu lze použít také v okně Okamžité na příkazovém řádku a dokonce i ve zdrojových oknech.Pokud pozastavíte výraz v těchto oknech, výsledek se zobrazí v datovém tipu.Datové tipy budou odrážet formát specifikátoru v zobrazení datového tipu.

[!POZNÁMKA]

Nativní ladicí modul sady Visual Studio převedený do nového modulu pro ladění.Součástí této změny bylo také přidání některých nových specifikátorů formátu a odstranění některých jejich starých verzí.Přechod není úplný a starší ladicí program je stále používán, když provedete ladění spolupráce (smíšená nativní a spravovaná) pomocí C + +/ CLI, a při ladění pomocí jazyka C++ upravíte a pokračujete.Sekce v tomto tématu uvádí specifikátory formátu pro každý ladicí stroj.

  • Specifikátory formátu Visual Studio 2012 popisují specifikátory formátu v novém ladicím modulu.

  • Specifikátory formátu pro interop ladění a C++ Upravit a pokračovat popisuje specifikátory formátu staršího modulu pro ladění.

Obsah

Příklad

Specifikátory formátu Visual Studio 2012

  • Velikost specifikátoru pro ukazatele jako pole v aplikaci Visual Studio 2012

Specifikátory formátu pro interop ladění a C++ Uprav a pokračuj

  • Specifikátory formátu umístění paměti pro interop ladění a C++ Upravit a pokračovat

  • Specifikátor velikosti ukazatelů v podobě polí pro definiční ladění a úpravy a pokračování v jazyce C++

Příklad

Předpokládejme, že nVar je proměnná typu integer a Okno kukátka obsahuje jeho hodnotu 0x0065.Chcete-li zobrazit hodnotu vyjádřenou jako znak namísto celého čísla ve sloupci Název, přidejte za název proměnné specifikátor formátu znaku, c:

Místo celočíselné hodnoty 0x0065 sloupec Hodnota nyní zobrazuje hodnotu znaku 101 'e'.

Pokud chcete aplikovat specifikátor formátu na elementy pole nebo členy objektu, musí ho použít přímo na každý element nebo člen.Nelze ji použít pro pole nebo objekt jako celek.Předpokládejme například, že máte pole nArray a chtěli byste vidět první čtyři elementy ve formátu znaků.Tyto výrazy byste zadali v okně Sledování:

nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c

Specifikátory formátu Visual Studio 2012

Následující tabulky popisují specifikátory formátu, které lze použít v aplikaci Visual Studio 2012, pokud neladíte definiční kód(nativní a spravovaný) v jazyce C++/CLI, nebo nepoužíváte funkci úpravy a pokračování v jazyce C++.

Specifikátory "bold" nejsou podporovány pro definiční ladění v jazyce C++/CLI nebo ladění úprav a pokračování v jazyce C++.

Specifikátor

Format

Výraz

Zobrazená hodnota

d

desetinné celé číslo

0xF000F065, d

-268373915

o

osmičkové celé číslo bez znaménka

0xF065, o

0170145

x

h

Šestnáctkové celé číslo

61546, x

61541, h

0x0000f06a

X

H

Šestnáctkové celé číslo

61541, X

61546, H

0x0000F06A

c

Jeden znak

0x0065, c

101 'e'

s

Řetězec ASCII

0x0012fde8, s

"Hello world"

sb

Řetězec ASCII

0x0012fde8, sb

Hello world

su

Řetězec znaků Unicode

0x0012fde8, su

L "Hello world"

sub

Řetězec znaků Unicode

0x0012fde8, sub

Hello world

s8

Řetězec UTF-8

0x0012fde8, s8

"Hello world"

s8b

Řetězec UTF-8

0x0012fde8, s8b

Hello world

bstr

Řetězec BSTR

0x0032fe8, bstr

Zdravíme,

, na

&myGlobal, n

WinMain, na

Není zobrazena adresa ukazatele.

nd

pb,nd

Zobrazí pouze informace o pb základní třídy a ignoruje odvozené třídy

hr

Kód chyby HRESULT nebo Win32. (Ladicí program nyní dekóduje hodnoty HRESULT automaticky, takže v těchto případech není tento specifikátor vyžadován.

0x00000000L, hr

S_OK

wc

Příznak třídy okna.

0x00000040, wc

WC_DEFAULTCHAR

wm

Čísla zpráv systému Windows

0x0010, wm

WM_CLOSE

!

Formát RAW ignorující přizpůsobení zobrazení typu dat

i !

4

Velikost specifikátoru pro ukazatele jako pole v aplikaci Visual Studio 2012

Pokud máte ukazatel na objekt, který chcete zobrazit v poli, můžete použít k zadání počtu elementů pole celé číslo nebo výraz:

Specifikátor

Format

Výraz

Zobrazená hodnota

n

Desetinné číslo nebo šestnáctkové celé číslo

pBuffer,[32]

pBuffer,[0x20]

Zobrazí pole elementu jako pBuffer 32.

[exp]

Platný výraz jazyka C++, který je vyhodnocen jako celé číslo.

pBuffer,[bufferSize]

Vyhodnotí bufferSize a zobrazí pBuffer jako pole vyhodnocené počtem elementů.

rozbalit(n)

pBuffer, expand(1,2)

Zobrazí třetí podřízenou položku druhého podřízené položky z pBuffer

Specifikátory formátu pro interop ladění s C++/CLI a C++ Upravit a pokračovat

Specifikátory "bold" jsou podporovány pouze pro nativní ladění v jazyce C++/CLI a ladění úprav a pokračování v jazyce C++.

Specifikátor

Format

Výraz

Zobrazená hodnota

d,i

desítkové celé číslo se znaménkem

0xF000F065, d

-268373915

u

desítkové celé číslo bez znaménka

0x0065, u

101

o

osmičkové celé číslo bez znaménka

0xF065, o

0170145

x,X

Šestnáctkové celé číslo

61541, x

0x0000f065

l,h

dlouhé nebo krátké předpony pro: d, i, u, e, x, X

00406042,hx

0x0c22

f

plovoucí desetinná čárka se znaménkem

(3./2.), f

1.500000

e

matematický zápis se znaménkem

(3./2.), e

1.500000e+000

g

plovoucí desetinná čárka se znaménkem nebo matematický zápis se znaménkem, podle toho, co je kratší

(3./2.), g

1.5

c

Jeden znak

0x0065, c

101 'e'

s

Řetězec

0x0012fde8, s

"Hello world"

su

Řetězec znaků Unicode

0x0012fde8, su

L "Hello world"

sub

Řetězec znaků Unicode

0x0012fde8, sub

Hello world

s8

Řetězec UTF-8

0x0012fde8, s8

"Hello world"

hr

Kód chyby HRESULT nebo Win32. (Ladicí program nyní dekóduje hodnoty HRESULT automaticky, takže v těchto případech není tento specifikátor vyžadován.

0x00000000L, hr

S_OK

wc

Příznak třídy okna.

0x00000040, wc

WC_DEFAULTCHAR

wm

Čísla zpráv systému Windows

0x0010, wm

WM_CLOSE

!

Formát RAW ignorující přizpůsobení zobrazení typu dat

i !

4

Formát specifikátorů paměťových míst v interoperabilním ladění s C + +/ CLI nebo C++ Upravit a pokračovat

Následující tabulka obsahuje symboly formátování použité pro místo v paměti.Specifikátor vyhledávání v paměti můžete použít s libovolnou hodnotou nebo výrazem, který je vyhodnocován na místo.

Symbol

Format

Výraz

Zobrazená hodnota

ma

64 znaků ASCII

ptr, ma

0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1

m

16 bajtů v šestnáctkovém formátu, následovaný 16 znaky ASCII

ptr, m

0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mb

16 bajtů v šestnáctkovém formátu, následovaný 16 znaky ASCII

ptr, mb

0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mw

8 slov

ptr, mw

0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000

md

4x Doubleword

ptr, md

0x0012ffac 00CB34B3 80943084 308A22FF 00002657

mq

2x Quadword

ptr, mq

0x0012ffac 7ffdf00000000000 5f441a790012fdd4

mu

2bajtové znaky (Unicode)

ptr, mu

0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000

Specifikátor velikosti ukazatelů v podobě polí pro definiční ladění a úpravy a pokračování v jazyce C++/CLI nebo C++

Pokud máte ukazatel na objekt, který chcete zobrazit v poli, můžete použít k zadání počtu elementů pole celé:

Specifikátor

Format

Výraz

Zobrazená hodnota

n

Desetinné celé číslo

pBuffer[32]

Zobrazí pole elementu jako pBuffer 32.