我很难让Eclipse Indexer(Codan)识别头文件中的某些数据声明。对Index all header variants有一个新的偏好,但很少解释这意味着什么。启用首选项似乎可以解决问题。但我仍然想知道这种偏好究竟是什么。
答案 0 :(得分:3)
假设你有这样的标题a.h
:
#pragma once
#ifndef SYMBOL
#define SYMBOL int
#endif
struct S
{
SYMBOL sym;
};
现在如果你包括这样的标题:
struct UserSymbol
{
int i, j, k;
};
#define SYMBOL UserSymbol
#include "a.h"
S var;
int main()
{
var.sym.i = 123;
return 0;
}
然后Eclipse CDT可能无法识别sym.i
。
您可能有更复杂的示例,包含更深层次的嵌套内容等。
编辑:
但是,如果将a.h
包含在“索引所有特定标题的变体”列表中或选中“索引所有标题变体”,Eclipse将构建a.h
索引的多个变体并将“知道”您已定义特定的SYMBOL
。