Eclipse CDT内容辅助未完成结构

时间:2015-01-26 19:49:44

标签: c eclipse struct eclipse-cdt content-assist

我以前在Eclipse CDT中使用了内容辅助而没有遇到问题。然而,对于一个新项目,我在内容辅助方面遇到问题,建议来自C结构的成员。它准确地建议了结构类型,而不是成员。

我有内容辅助设置来优先处理基于解析的提议+基于解析的提议(以任务为中心)。我取消选择其他建议的其他选项;看起来它们是否会做任何事情,无论它们是否被选中。

这是我试图获取建议的结构:

/**
* 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

我的项目如何编制索引可能会遗漏一些东西吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

看起来它总是有效!如果成员在一个函数中,似乎只会被推荐 - 例如:

sDINVoltage voltages_;
voltages_. // No recommendation 

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

我试图在功能之外获得推荐。 :)如果有人知道为什么会这样,那么知道它仍然会很好!

答案 1 :(得分: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()
{
}