2015-11-12 2 views
0

Что не так синтаксически с этими массивами символов?Ожидание; в конце объявления строки

struct NewBuiltIn{ 
    char *CommandName[64] = "bigbluetest"; 
    char *FunctionName[64] = "big_blue_test"; 
    char *AnalyzerFunction[64] = "bbt_analyzer"; 
}; 

я получаю код ошибки ...

error: expected ';' at end of declaration list 
     char *CommandName[64] = "bigbluetest"; 
          ^
          ; 
+2

'char * CommandName [64] =" bigbluetest ";' <- вы назначаете строку ~ указателю на массив символов, на массив указателей на символы. – PSkocik

ответ

1

Вы не можете инициализировать на структуру в то время, которое вы определяете его. Поэтому вы должны определить его правильно, затем создать экземпляр .

struct NewBuiltIn my_builtin = { 
    "bigbluetest", 
    "big_blue_test", 
    "bbt_analyzer" 
}; 

Таким образом, чтобы определить-структуру, вы можете сделать это следующим образом:

struct NewBuiltIn { 
    char CommandName[64]; 
    char FunctionName[64]; 
    char AnalyzerFunction[64]; 
}; 

который определяет struct NewBultIn с 3 членов, все из которых являются массивами символов. Ваше определение создавало массив указателей char *.

+1

И, возможно, типы полей структуры также ошибочны? Должны быть массивы 'char' или просто' char * ', а не' char * 'массивы. – kaylum

+1

Возможно, вы захотите объяснить, как правильно определить структуру. Кажется, что OP пытается создать массив char, но определяет его как массив char * s – jayant

Смежные вопросы