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.