-\newcommand{\func}[1]{\texttt{#1}} % library function (or system call)
-\newcommand{\macro}[1]{\texttt{#1}} % macro constant
+\newcommand{\code}[1]{\texttt{#1}} % for simple code
+\newcommand{\func}[1]{%
+\index{#1@{{\tt {#1}} (funzione)}}\texttt{#1}%
+}
+\newcommand{\funcd}[1]{%
+\index{#1@{{\tt {#1}} (funzione)}!definizione di}\texttt{#1}%
+}
+\newcommand{\macro}[1]{%
+\index{#1@{{\tt {#1}} (macro)}}\texttt{#1}%
+}
+\newcommand{\errcode}[1]{%
+\index{#1@{{\tt {#1}} (errore)}}\texttt{#1}%
+}
+\newcommand{\errval}[1]{\texttt{#1}} % value