Menu

Komentarze w C++: jednoliniowe // i wieloliniowe /* */

Jak pisać komentarze w C++: jednoliniowe notatki // i wieloliniowe bloki /* */, jak zakomentować kod, dlaczego komentarzy blokowych nie da się zagnieżdżać i co sprawia, że komentarz jest wart zachowania.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Do czego służą komentarze

Komentarz to tekst w kodzie źródłowym, który kompilator C++ całkowicie ignoruje. Nigdy nie trafia do skompilowanego programu: istnieje wyłącznie dla ludzi czytających kod. Komentarzy używasz, aby wyjaśnić, dlaczego coś zrobiono w określony sposób, zostawić przypomnienia albo tymczasowo wyłączyć kod bez usuwania go.

Opierając się na znanej ci już składni C++: komentarze to jedna z niewielu rzeczy, które możesz wstawić niemal wszędzie, a kompilator po prostu je pominie. C++ ma dwa rodzaje: jednoliniowe (//) i wieloliniowe komentarze blokowe (/* */).

Komentarze jednoliniowe

Dwa ukośniki (//) rozpoczynają komentarz, który trwa do końca bieżącej linii. Kompilator pomija wszystko od // do końca linii.

Zwróć uwagę, że drugi komentarz dzieli linię z prawdziwym kodem. Wszystko przed // nadal się wykonuje; ignorowana jest tylko część po nim. To najczęstszy styl komentarzy dla krótkich notatek.

Wieloliniowe komentarze blokowe

Gdy notatka zajmuje kilka linii, komentarz blokowy jest czytelniejszy niż poprzedzanie każdej linii przez //. Komentarz blokowy zaczyna się od /* i kończy na */. Wszystko pomiędzy, niezależnie od liczby linii, jest ignorowane.

Wyrównane znaki * na początku kolejnych linii to konwencja stylu, a nie reguła. Naprawdę liczą się tylko otwierające /* i zamykające */. Komentarz blokowy może nawet stać w środku linii (int x = 5 /* width */ + 2; jest poprawne), choć szybko robi się to nieczytelne.

Zakomentowywanie kodu

Komentarze to standardowy sposób na wyłączenie kodu podczas eksperymentów bez jego usuwania. Użyj // dla jednej linii albo komentarza blokowego, aby wyłączyć kilka linii naraz.

Uruchom to, a zobaczysz tylko dwie linie z "runs". Zakomentowane instrukcje cout są dla kompilatora niewidoczne.

Pułapka braku zagnieżdżania

Pułapka, w którą wpadają początkujący: komentarze blokowe się nie zagnieżdżają. Pierwsze */ zamyka komentarz, niezależnie od tego, ile /* pojawiło się wcześniej. Nie możesz więc owinąć bloku /* ... */ w inny blok /* ... */: wewnętrzne */ kończy całość, a wszystko po nim znowu staje się kodem (zwykle z błędem składni).

/*  Trying to disable a region that already has a block comment...
    int n = 10; /* the width */
    cout << n;
*/  // the first */ above already closed the comment - this line is now stray code

Zewnętrzny komentarz kończy się na */ po the width, więc reszta nie jest już zakomentowana, a kompilator dławi się końcowym */. Gdy musisz wyłączyć obszar, który już zawiera komentarze blokowe, postaw // w każdej linii. Większość edytorów przełącza komentarze liniowe dla całego zaznaczenia jednym skrótem klawiszowym, co całkowicie omija problem.

Dobre komentarze a szum

Komentarz powinien wyjaśniać coś, czego kod nie powie sam. Komentarze, które tylko powtarzają kod, dodają bałaganu i z czasem przestają zgadzać się z kodem, gdy ten się zmienia.

// Bad: just repeats what the code obviously does
i = i + 1; // add one to i

// Better: explains the reason, which the code can't show
retries++; // back off and retry; the API is rate-limited at 5 req/sec

Staraj się, aby to kod był czytelny dzięki jasnym nazwom i strukturze, a komentarze zostaw na dlaczego: intencję, kompromisy, przypadki brzegowe i odnośniki do kontekstu. Jeśli piszesz komentarz, żeby wyjaśnić zagmatwaną linię, to często znak, że lepiej zmienić nazwę zmiennej albo wydzielić logikę do dobrze nazwanej funkcji.

Dalej: zmienne

Umiesz już opisywać swój kod, więc kolejny element to przechowywanie w nim danych. Następna strona omawia zmienne: jak je deklarować, jakie wbudowane typy przechowują i jakie reguły wymusza C++, bo jest językiem statycznie typowanym.

Najczęściej zadawane pytania

Jak napisać komentarz w C++?

Użyj // dla komentarza jednoliniowego: wszystko po nim w tej linii kompilator ignoruje. Dla komentarza na wiele linii umieść tekst między /* a */. Na przykład: // this is a note albo /* this spans lines */.

Jaka jest różnica między // a /* */ w C++?

// wyłącza resztę jednej linii, więc potrzebujesz go w każdej linii. /* */ to komentarz blokowy, który zaczyna się od /* i trwa do najbliższego */, nawet przez wiele linii. Używaj // do krótkich notatek w linii, a /* */ do wyłączenia fragmentu tekstu lub kodu naraz.

Czy w C++ można zagnieżdżać komentarze?

Nie. Komentarze blokowe (/* */) się nie zagnieżdżają: pierwsze */ zamyka komentarz niezależnie od tego, ile /* było wcześniej. Aby wyłączyć obszar, który już zawiera komentarze blokowe, postaw // w każdej linii (większość edytorów robi to jednym skrótem).

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ