我以前在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
我的项目如何编制索引可能会遗漏一些东西吗?提前谢谢!
答案 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()
{
}
)