Udostępnij za pośrednictwem


Zalecane wyrażenia w C++

Zarządzane szacującego akceptuje wyrażenia większości napisane w Visual C++.W następujących tematach oferują szczegółowe informacje i omówić niektóre typy wyrażenie, które nie są obsługiwane:

  • Identyfikatory i typy

  • Obliczanie wartości funkcji

  • Operatory

  • Operatory przeciążone

  • Ciągi

  • Rzutowania

  • Porównanie obiektów i przydziałów

  • Operatory typeof i sizeof

  • Opakowywanie

  • Oszacowywanie właściwości

Kwalifikatory access ignoruje szacującego public, protected, internal, i private.Na przykład można wywołać metodę private w oknie Czujka.

Ewaluator wyrażeń wykonuje wszystkie oszacowania w niejawnym niebezpiecznym kontekście, niezależnie czy wykonywany kod jest bezpieczny lub niebezpieczny.

Debuger używa autoexpand reguł do wyświetlania zawartości typu danych w formie znaczące.Jeśli trzeba, można dodać niestandardowe autoexpand elementy do wyświetlania własne niestandardowe typy danych.Aby uzyskać więcej informacji, zobacz Wyświetlanie elementów typu danych Custom.

Identyfikatory i typy

Wyrażenia debugowania mogą używać dowolnych identyfikatorów widocznych w aktualnym zakresie.Jeśli debugera jest zatrzymywane w funkcji magh, na przykład, można użyć żadnego identyfikatora widoczne w obrębie magh, w tym stałych, zmiennych nazw i nazwy funkcji.

Debuger może poprawnie wyświetlać dowolnych zmiennych primitive, enum, lub intrinsic typu.W przypadku zmiennych class typu, debuger wyświetla poprawne wartości na podstawie typu pochodzi największego.Jeśli obiekt leo typu lion, pochodzi od typu cat, można oszacować leo.clawlength i uzyskać poprawną wartość dla obiektu typu lion.

Nową wartość można przypisać do dowolnego wyrażenia lewej strony, który jest wartością l typ pierwotny.Przydziały do typu klasy i tablicy nie są obsługiwane.

Obliczanie wartości funkcji

Debuger obsługuje oceny funkcji, w tym funkcji zastąpionej.W związku z tym można wpisać jedno z następujących wyrażeń, a narzędzie debugger będzie wywoływać poprawną wersję funkcji zastąpionej:

kanga ()
kanga (roo)

Faktycznie oceny funkcji w debugerze wywołania i wykonuje kod dla tej funkcji.Jeśli funkcja ma skutków ubocznych, takich jak przydzielanie pamięci lub zmiana wartości zmiennej globalnej oceny funkcji w oknie Debuger zmieni stan programu, który może dać nieoczekiwane rezultaty.

Po ustawieniu punktu przerwania w funkcji zastąpionej lokalizacji punkt przerwania zależy sposób określania funkcji.Jeśli określisz tylko nazwę tej funkcji debugera ustawi jeden punkt przerwania na każdym przeciążenie tej nazwy funkcji.Jeśli określisz pełną podpisu, nazwa funkcji i Pełna argument w postaci listy debugera ustawia jeden punkt przerwania na określony przeciążenie.

Operatory

Debuger poprawnie oszacowuje większość wbudowanych operatorów, w tym:

  • Relational operators: (expr1>expr2, expr1<expr2, expr1<= expr2, expr1 =>expr2, expr1 == expr2, expr1 != expr2).

  • Boolean operators: (expr1&&expr2, expr1 || expr2).

  • Operator warunkowy: (expr1 ?expr2 : expr3) .

  • Operatorów arytmetycznych: ( expr1 + expr2,expr1 - expr2,expr1 * expr2, expr1 / expr2, expr1 % expr2).

  • Bitwise operators: (expr1&expr2, expr1 ^ expr2,expr1 | expr2, expr1 ~ expr2).

  • Operatory przesunięcia.Examples: (expr1>>expr2, expr1<<expr2, expr1>>>expr2).

  • Assignment operators: ( lvalue = expr2, lvalue *= expr2, lvalue /= expr2, lvalue %= expr2, lvalue += expr2, lvalue -= expr2, lvalue<<= expr2, lvalue>>=expr2, lvalue&= expr2, lvalue ^= expr2, lvalue |= expr2 ).

  • Operatory jednoargumentowe.Examples: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1 ).

Służy do wprowadzania wartości szeregu wyrażeń operatorem przecinka: expr1, expr2,expr3.

Operatory przeciążone

Większość przeciążonych operatorów działa w debugerze.

Przeciążone operatory dwuargumentowe +, -, /, % i & działają:

  • expr1 + expr2

  • expr1expr2

  • expr1 / expr2

  • expr1 % expr2

  • expr1 & expr2

Przeciążone operatory infix =, &&, &, ||, |, i ^ nie działają:

  • expr1 = expr2

  • expr1 && expr2

  • expr1 & expr2

  • expr1 || expr2

  • expr1 | expr2

  • expr1 ^ expr2

Przeciążone operatory relacyjne ==,! =, >, <, >=, i <= nie działają w języku C++:

  • expr1 == expr2

  • expr1 != expr2

  • expr1 > expr2

  • expr1 < expr2

  • expr1 >= expr2

  • expr1 <= expr2

Przeciążone operatory infix |, ^, <<, >>, >, <, >=, i <= nie działają:

  • expr1 | expr2

  • expr1 ^ expr2

  • expr1 << expr2

  • expr1 >> expr2

  • expr1 > expr2

  • expr1 < expr2

  • expr1 >= expr2

  • expr1 <= expr2

Przeciążone operatory prefiksowe +, -, ++, --, ! i ~ działają:

  • +expr1

  • -expr1

  • ++expr1

  • --expr1

  • !expr1

  • ~expr1

Przeciążone operatory przyrostkowe ++ i -- działają:

  • expr1++

  • expr1--

Przeciążenie operatora [] program works:

  • x[expr2]

Wielowymiarowe tablice

Tester wyrażenie C++ używa języka C#-składnia dla tablic wielowymiarowych w stylu.Na przykład:

c[0,0]

Przy użyciu normalnego składni języka C++ generuje błąd:

c[0][0]Błąd: indeks '0' poza granicą wskaźnik/tablicy 'c'

Ciągi

Debuger rozpoznaje indeksowane operatory, gdy jest używany z ciągami, a także tablice.Tak więc na przykład, można wprowadzić:

"hello world"[0]

W oknie Czujka zostaną wyświetlone poprawne wartości:

'h'

Rzutowania

Proste wyrażenia rzutowania działają w debugerze:

(A)x

Odlewy, które obejmują wskaźniki nie będzie działać w debugerze:

Odlewy zdefiniowane przez użytkownika nie działają w debugerze dla Visual C++.

Porównanie obiektów i przydziałów

Porównanie obiektów i przydziałów w debugerze nie działa w przypadku Visual C++.

Operatory typeof i sizeof

Debuger obsługuje operator typeof i sizeof przez przekształcenie równoważnych funkcji.NET Framework.

typeof ( expression)

jest przekształcane na:

System.Type.GetType(expression )

Debuger następnie oblicza to przekształcone wyrażenie.

Debuger nie obsługuje sizeof operatora.

Opakowywanie i rozpakowywanie

Tester wyrażenie debuger nie obsługuje boksie i rozpakowywania w Visual C++.Aby uzyskać więcej informacji, zobacz Pakowanie i rozpakowywanie.Jeśli masz zmiennej całkowitą i który został przekształcony w obiekt poprzez bokserskie, oceni debugera i jako liczba całkowita, a nie jako obiekt.Wyniki mogą nie być oczekiwań.

Oszacowywanie właściwości

Debuger może oszacować właściwości w dowolnym oknie zmiennej.Jednak oceny właściwości w debugerze może mieć skutki uboczne, które produkują niepożądane i nieoczekiwane wyniki.Aby chronić się przed skutkami ubocznymi powodowanymi przez przypadkowe oszacowanie, można wyłączyć oszacowanie właściwości w oknie dialogowym Opcje.

WebMethods

Nie można wywoływać WebMethods z debugera systemu Windows.

Zobacz też

Inne zasoby

Wyrażenia w debugerze