内容辅助建议无法访问的变量和函数

Content assist suggests unreachable variables and functions

当我编辑源文件并使用内容辅助时,我不希望它提示 variables/functions/etc。来自我没有包含的其他源文件。它应该只建议当前文件和包含的内容 headers。我怎样才能使内容辅助不会建议无法访问的变量和函数?如果没有办法做到这一点,那么坦率地说,对于一个优秀的 IDE.

来说,这是一个可笑的缺陷。

有趣的是,昨天我似乎通过将源文件移动到另一个文件夹来让它工作,但今天,如果我不在 "C/C++ General -> Paths and Symbols -> Source Locations" 中列出源文件夹,我得到源文件中未解决的包含(索引器甚至不会解决标准库函数),如果我确实列出了文件夹,那么我回到原点,内容辅助再次提示无法访问 variables/functions。

CDT 不会在代码补全中出现无法到达的情况。您面临的问题是无法访问 AFAICT 的定义。

在 C 中,所有非静态的都是 "public" 并且可以从其他任何地方调用。甚至不需要声明(虽然我会推荐 -Wall -Werror,但那是一个单独的讨论)。

例如,考虑 file.c 的内容:

static void func_private1(void) {}
static void func_private2(void) {}
void func_public1(void) {}
void func_public2(void) {}

如果您在 file.c 中请求 func_ 的完成,您将获得所有完成:

但是,如果您打开另一个文件并请求完成 func_,您只会得到 public 个(非静态):

现在,在另一个文件中,如果您 select func_public1,那么您可以 CDT 自动为其添加头文件。您可以使用 "organizing imports" Shift-Ctrl-O(源菜单 -> 组织导入).

您可以在首选项中控制组织导入的行为(C/C++ -> 代码风格 -> 组织导入)