構造体の配列を出力するための疑似スーパー構造体を作成しようとしていました。私の基本的な構造は次のとおりです。
/* Type 10 Count */
typedef struct _T10CNT
{
int _cnt[20];
} T10CNT;
...
/* Type 20 Count */
typedef struct _T20CNT
{
long _cnt[20];
} T20CNT;
...
上記の構造体の配列を出力するために、以下の構造体を作成しました。以下のコード スニペットのコンパイル中に void ポインター エラーを逆参照しました。
typedef struct _CMNCNT
{
long _cnt[3];
} CMNCNT;
static int printCommonStatistics(void *cmncntin, int cmncnt_nelem, int cmncnt_elmsize)
{
int ii;
for(ii=0; ii<cmncnt_nelem; ii++)
{
CMNCNT *cmncnt = (CMNCNT *)&cmncntin[ii*cmncnt_elmsize];
fprintf(stout,"STATISTICS_INP: %d\n",cmncnt->_cnt[0]);
fprintf(stout,"STATISTICS_OUT: %d\n",cmncnt->_cnt[1]);
fprintf(stout,"STATISTICS_ERR: %d\n",cmncnt->_cnt[2]);
}
return SUCCESS;
}
T10CNT struct_array[10];
...
printCommonStatistics(struct_array, NELEM(struct_array), sizeof(struct_array[0]);
...
私の意図は、すべての配列を印刷する共通の機能を持つことです。正しい使い方を教えてください。
事前に助けに感謝します。
編集: パラメータ名が cmncnt から cmncntin に変更されました。すみません、タイプミスでした。
ありがとう、マシュー・リジュ