Коментари

У изворном коду написаном у програмском језику C можеш писати коментаре (енгл. comments) који се не извршавају као део програма. Они дају јасноћу изворном коду и омогућавајући другима да боље разумеју функционалност кода. Коментари могу помоћи и аутору кода да се присети функционалности сопственог кода којег је раније написао. Коментари су посебно важни у великим пројектима који могу да садрже на хиљаде линија изворног кода или у пројектима у којима више програмера раде у тиму. Због свега наведеног писање коментара у изворном коду је веома препоручљива пракса.

Након кодирања и тестирања, долази фаза израде програмске документације. У овој фази коментари могу да имају кључну улогу, јер их користе алати за генерисање програмске документације, као што је Doxygen.

Не требаш ни претеривати са употребом коментара и објашњавати очигледне ствари у коду. Информације о синтакси програмског језика или о коришћењу библиотечких функција свако може пронаћи на интернету или у референтним приручницима. Коментари не треба да објашњавају како кôд ради, већ шта ради и зашто ради. Коментари требају бити прецизни, кратки и јасни. Такође, ако касније мењаш изворни кôд који је коментарисан, мораш мењати и коментаре у складу са променама кода.

Стандардни C коментари

Стандардни C коментари почињу комбинацијом карактера /* и завршавају се комбинацијом карактера */. Компајлер игнорише коментаре - један коментар третира као један нештампајући карактер (енгл. white-space character). Стандардни C коментари могу да садрже било који знак из азбуке језика C, укључујући и знак за нову линију \n (енгл. newline). Коментари се могу писати у једној линији (енгл. line или inline comments) или у више линија (енгл. block, prologue или stream comments).

На пример, у следећем коду коментарисана је улога функције printf() у једној линији изнад те функције…

#include <stdio.h>

int main(void)
{
    /* Ispis teksta Hello, World! na standardni izlaz */
    printf("Hello, World!");
    return 0;
}

…или поред те функције

#include <stdio.h>

int main(void)
{
    printf("Hello, World!"); /* Ispis teksta Hello, World! na standardni izlaz */
    return 0;
}

Ако је коментар предугачак да би стао у једну линију, може се написати у више линија:

/*
 * Sledeci program ispisuje tekst Hello, World! na standardni izlaz
 * (stdout) koristeci bibliotecku funckiju printf(). Funkcija printf()
 * definisana je u biblioteci stdio.h.
 */
#include <stdio.h>

int main(void)
{
    printf("Hello, World!");
    return 0;
}

Kоментаре не смеш угнежђавати! У следећем примеру, компајлер ће пронаћи грешку у петој линији. Након што је препознао почетак коментара у првој линији /* игнорисао је текст све до првог појављивања */ у другој линији. Потом је препознао почетак и крај у трећој линији, па почетак и крај у четвртој линији. Крај коментара у петој линији */ је вишак и произвешће грешку у изворном коду.

/* Program ispisuje tekst Hello, World! na standardni izlaz (stdout):
    /* Ukljucivanje biblioteke stdio.h */
    /* Definisanje funkcije main() */
    /* Ispis teksta Hello, World! na standardni izlaz */
*/
#include <stdio.h>

int main(void)
{
    printf("Hello, World!");
    return 0;
}

Једнолинијски коментари

У програмском језику C++ уведени су једнолинијски коментари. Једнолинијски коментар почиње знаком //, а завршава се крајем линије. Како су данас сви модерни C компајлери заправо C/C++ компајлери, овакви једнолинијски коментари могу се користити и у коду писаном у програмском језику C.

#include <stdio.h>

int main(void)
{
    // Ispis teksta Hello, World! na standardni izlaz
    printf("Hello, World!");
    return 0;
}

или

#include <stdio.h>

int main(void)
{
    printf("Hello, World!"); // Ispis teksta Hello, World! na standardni izlaz
    return 0;
}

У једнолинијским коментарима не смеш користити знак \ на крају линије. Компајлер у следећем програму неће пронаћи грешку, али ће схватити знак \ на крају линијског коментара као почетак секвенце, па ће игнорисати и целу следећу линију схвативши је као део коментара.

#include <stdio.h>

int main(void)
{
    // Ispis teksta Hello, World! na standardni izlaz \
    printf("Hello, World!");
    return 0;
}