Следующий код [только что изменил и ввел размер массива] и скомпилировал нормально.
#include <stdio.h>
typedef struct {
char *fldName;
unsigned fldLen;
} Field;
typedef struct {
char *fldPrompt;
unsigned startRow;
unsigned startCol;
} Prompt;
typedef struct {
Field *fields[3];
Prompt *prompts[3];
unsigned numFlds; // invalid field declaration after empty field
} Form; // in '(incomplete) struct (no name)'.
Field firstName = { "fName", 12 };
Field surName = { "sName", 25 };
Field gender = { "gder", 1 };
Prompt fn = { "First Name : ", 4, 10 };
Prompt sn = { "Surname : ", 6, 10 };
Prompt gn = { "Gender : ", 8, 10 };
int main (void)
{
Form aForm = { { &firstName, &surName, &gender },
{ &fn, &sn, &gn},
3 }; // Multiple initializers for the same element
return 0; // Too many initializers
}
Кроме того, если вам нужно больше 3 в строке 15, вам нужно объявить его двойным указателем, выделить память и использовать ее. Но убедитесь, что освободили / освободили его, когда не собираетесь его использовать. В противном случае это приведет к утечке памяти.