Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Długie makra mogą być trudne do odczytania. Program Visual Studio może teraz rozwinąć makra C i C++. Możesz uzyskać kopię w schowku tego, jak wygląda rozwinięte makro, zastąpić makro wbudowanym rozszerzeniem, a następnie rozwinąć makro krok po kroku, aby zobaczyć, jak wygląda na każdym etapie rozszerzania. W tym artykule poeksperymentujesz ze wszystkimi tymi funkcjami.
Wymagania wstępne
- Visual Studio w wersji 17.5 lub nowszej
Tworzenie przykładu
Uruchom program Visual Studio 2022 w wersji 17.5 lub nowszej i utwórz aplikację konsolową języka C++.
Zastąp domyślny kod:
#include <iostream> #define MASS 10.0 #define ACCELERATION 20.0 #define SPEED 5.0 #define TIME 2.0 #define DISTANCE() (SPEED * TIME) #define FORCE()(MASS * ACCELERATION) #define WORK()(FORCE() * DISTANCE()) #define POWER()(WORK()/TIME) int main() { std::cout << "Distance: " << DISTANCE() << std::endl; std::cout << "Force: " << FORCE() << std::endl; std::cout << "Work: " << WORK() << std::endl; std::cout << "Power: " << POWER() << std::endl; }
Kopiowanie rozwiniętego makra
Możesz sprawdzić rozszerzoną wartość makra, nawet jeśli jest zaangażowanych kilka kroków preprocesora, wykonując następujące czynności:
Umieść kursor na makrze
POWER
wewnątrzmain()
w przykładzie.Po umieszczeniu wskaźnika myszy na makrze opcje są wyświetlane w obszarze Kopiuj, Rozwiń śródliniowy, Wizualizuj rozszerzenie i Wyszukaj w trybie online:
Okno makra jest otwarte w usłudze POWER, aby pokazać, że rozwija się do (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0). Opcje kopiowania, rozwijania wbudowanego, rozszerzania wizualizacji i wyszukiwania w trybie online są wyświetlane w dolnej części okna.
Wybierz pozycję Kopiuj.
Utwórz komentarz po
POWER
wierszu i wybierz polecenie wklej (CTRL+V). Rozszerzenie makra jako komentarz w pobliżu makra wygląda następująco:// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0)
. Skrót klawiaturowy dla tej akcji to CTRL+M, CTRL+C.
Rozszerzanie wbudowanego makra
Wykonaj następujące kroki, aby rozwinąć wbudowane makro, które zastępuje makro rozszerzeniem:
- Umieść kursor na makrze
POWER
wewnątrzmain()
w przykładzie. - Po umieszczeniu kursora na makrze opcje są wyświetlane w pozycji Kopiuj, Rozwiń wbudowane, Wizualizuj rozszerzenie i Wyszukaj w trybie online
- Wybierz pozycję Rozwiń wbudowany. Makro
POWER()
jest zastępowane rozszerzoną wartością:std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;
. Skrót klawiaturowy dla tej akcji to CTRL+M, CTRL+I.
Wizualizowanie rozszerzenia makr
Makro można rozwinąć jeden krok naraz. Jest to przydatne, gdy istnieją makra zagnieżdżone i chcesz zobaczyć rozszerzenie krok po kroku. Aby zwizualizować rozszerzenie makra dla WORK
makra, wykonaj następujące kroki:
Umieść kursor na makrze
WORK
wewnątrzmain()
w przykładzie.Po umieszczeniu kursora na makrze opcje są wyświetlane w pozycji Kopiuj, Rozwiń śródliniową, Wizualizuj rozszerzenie i Wyszukaj w trybie online.
Wybierz pozycję Wizualizuj rozszerzenie. Skrót klawiaturowy dla tej akcji to CTRL+M, a następnie CTRL+V.
Zostanie wyświetlone okno rozszerzenia makra. Pierwsze rozszerzenie makra
WORK
jest widoczne: :(FORCE() * DISTANCE())
Okno wizualizacji makra jest otwarte w obszarze FORCE, aby pokazać, że początkowo rozwija się do (FORCE()*DISTANCE()). W oknie znajdują się pojedyncze nawiasy kątowe umożliwiające przechodzenie do przodu i do tyłu pojedyncze rozszerzenie naraz. Nawiasy dwukątne w pełni rozszerzają lub w pełni cofają rozszerzenie makra.
Kliknij prawy nawias kątowy, aby rozwinąć
FORCE
makro. W oknie jest teraz wyświetlaneFORCE
rozszerzenie makra:(MASS * ACCELERATION) * DISTANCE()
.Kliknij prawy nawias kątowy, aby rozwinąć kolejny krok. W oknie jest teraz wyświetlane
FORCE
rozszerzenie makra:((10.0 * ACCELERATION) * DISTANCE())
.
Kontynuuj rozszerzanie makra, aby zobaczyć pełne rozszerzenie WORK
makra, czyli : ((10.0 * 20.0) * (5.0 * 2.0))
.
Możesz użyć nawiasów dwukątnych, aby w pełni rozwinąć makro lub odwrócić rozszerzenie do pierwszego poziomu rozszerzenia.