2015-01-26 4 views
0

Я ранее пользовался поддержкой контента в Eclipse CDT без проблем. Тем не менее, с новым проектом у меня возникают проблемы с поддержкой контента, предлагая членам C-структуры. Это точно указывает на тип структуры, а не на членов.Eclipse CDT Content Assist Not Completing Structures

У меня есть служба поддержки контента, чтобы определять приоритеты предложений, основанных на синтаксическом анализе, + предложения на основе синтаксического анализа (Task-Focused). Я не выбрал другие варианты для других рекомендаций; похоже, что он ничего не делает, выбраны они или нет.

Вот структура, что я пытаюсь получить предложения по:

/** 
* HAL DIN voltages 
*/ 
typedef struct 
{ 
    uint16_t din0; ///< din0 voltage 
    uint16_t din1; ///< din1 voltage 
    uint16_t din2; ///< din2 voltage 
    uint16_t din3; ///< din3 voltage 
    uint16_t din4; ///< din4 voltage 
    uint16_t din5; ///< din5 voltage 
    uint16_t din6; ///< din6 voltage 
    uint16_t din7; ///< din7 voltage 
}sDINVoltage; 

sDINVoltage test; // sDINVoltage will get suggested 
test.//No members get suggested 

Есть ли что-то я, возможно, не хватает в том, как мои индексы проекта вещей? Заранее спасибо!

ответ

0

Похоже, он всегда работал! Члены, кажется, рекомендуются только в том случае, если они находятся в пределах функции:

sDINVoltage voltages_; 
voltages_. // No recommendation 

void test_func(void) 
{ 
    sDINVoltage voltages; 
    voltages.// Will get recommendation here 
} 

Я пытался получить рекомендации за пределами функции. :) Если кто-то знает, почему это происходит, все равно было бы хорошо знать!

0

Чтобы ответить на ваш вопрос, почему у вас нет рекомендаций вне функции: не допускается таким образом устанавливать элементы структуры вне функции. Вероятно, именно поэтому Eclipse CDT даже не дает вам предложения. Например, это не будет позволено:

test.din0 = 2; 

Я пробовал себя только сейчас со следующим кодом:

/* test.c */ 
typedef struct 
{ 
    char state1; 
} STATE_STR; 

STATE_STR state_str; 

state_str.state1='c'; 

void main() 
{ 
} 

Составлено в Cygwin Я получаю эту ошибку:

$ gcc test.c && ./a.exe 
test.c:8:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token 
state_str.state1='c'; 

(Вы можете использовать следующий код для инициализации вашей структуры:

typedef struct 
{ 
    char state1; 
} STATE_STR; 

STATE_STR state_str = {.state1='c'}; 

void main() 
{ 
} 

)

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