在哪里可以找到外部变量的定义?

时间:2011-06-11 01:56:22

标签: c++

在哪里可以找到end_of_list的定义?我从eclipse搜索整个项目,但找不到定义。但是当在调试时将end_of_list作为表达式时,我可以看到它的值,只是不要从哪个文件中找到它。

#pragma once

#include <cstdlib>
#include <cassert>
#include <utility>
#include <algorithm>
#include <drizzled/memory/sql_alloc.h>
#include <drizzled/visibility.h>

namespace drizzled {
    ....    
#define DRIZZLED_API __attribute__ ((visibility("default")))
extern DRIZZLED_API list_node end_of_list;  // where to find **end_of_list**

2 个答案:

答案 0 :(得分:3)

我可以看到两种直接的可能性。

  1. Eclipse搜索功能不是因为它是错误的(不太可能),或者该项的实际定义被保留在其范围之外的某个地方(例如,您包含的标题是在项目中。

  2. 实际定义根本不是源文件中,但可能在目标文件或库中,在这种情况下,您可能不应该担心关于定义 - 由于封装的原因,它是“隐藏的”。

  3. 当然,这些都是猜测,但这是我能用所提供信息做的最好的,而且我至少喜欢认为他们是受过教育的猜测: - )

答案 1 :(得分:1)

如果您使用“extern”在您的代码中声明它,那么它是在另一个源文件中定义的,该文件可能是您正在使用的库中编译的。参见:

http://drizzle.org/lcov/drizzled/sql_list.cc.gcov.html