The following works as intended, removing the vlines from the top row of a LaTeX longtable. Note: Need to use longtable because this table spans multiple pages and nicematrix does not currently support spanning multiple pages.
\documentclass{article}
\usepackage{longtable}
\makeatletter
\newcommand{@mc}[1]{\multicolumn{1}{l}{#1}}
\newcommand{\titleRow}[3]{@mc{when} & @mc{#1} & @mc{#2} & @mc{#3}\[1pt]}
\makeatother
\begin{document}
\begin{longtable}[c]{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\titleRow{First}{Second}{Third}
\hline
January & Tom & Dick & Harry \\hline
February & Dick & Harry & Tom \\hline
\end{longtable}
\end{document}
Here is the output as expected:

However, making the \titleRow command in a starred version leads to a Misplaced \omit. \multispan -> \omit error. Why does the following not work as intended?
\documentclass{article}
\usepackage{longtable}
\makeatletter
\newcommand{@mc}[1]{\multicolumn{1}{l}{#1}}
\newcommand{\titleRow}{@ifstar\star@titleRow\nostar@titleRow}
\newcommand{\star@titleRow}[3]{@mc{when} & @mc{#1} & @mc{#2} & @mc{#3}\[1pt]}
\newcommand{\nostar@titleRow}[3]{@mc{} & @mc{#1} & @mc{#2} & @mc{#3}\[1pt]}
\makeatother
\begin{document}
\begin{longtable}[c]{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\titleRow{First}{Second}{Third}
\hline
January & Tom & Dick & Harry \\hline
February & Dick & Harry & Tom \\hline
\end{longtable}
\end{document}
