In the following code,
\documentclass[12pt]{article}
\usepackage{multirow}
\usepackage{array}
\usepackage{hhline}
\newcommand{\spe}[1]{\multicolumn{2}{c}{#1}}
\makeatletter
\newcommand*{\@rowstyle}{}
\newcommand*{\rowstyle}[1]{% sets the style of the next row
\gdef\@rowstyle{#1}%
\@rowstyle\ignorespaces%
}
\newcolumntype{=}{% resets the row style
>{\gdef\@rowstyle{}}%
}
\newcolumntype{+}{% adds the current row style to the next column
>{\@rowstyle}%
}
\makeatother
\begin{document}
\begin{center}
\begin{tabular}{*{16}{+c}}
\hhline{~~~~~~~~~~~~~~~~}
\spe{a} & \spe{b} & \spe{c} & \spe{d} & \spe{e} & \spe{f} & \spe{g} & \spe{h} \\
\hhline{~~~~----~~~~~~~~}
\spe{a} & \spe{b} & {c} & {d} & {c} & {d} & \spe{e} & \spe{f} & \spe{g} & \spe{h} \\
\end{tabular}
\end{center}
\end{document}
I need the table to be of equal width columns even in multicolumns. i. e.

But the produced output neglects columns without any content. i. e.

Even p{} does not achieve this.
Also, the column content should be centre aligned. In most of the column types, the content alignment is not controlled or the width is not controlled.
Any ideas, guys?!
