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

where to find the definition of a external variable?

本文关键字:变量 定义 外部 在哪里      更新时间:2023-10-16

在哪里可以找到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**

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

  1. Eclipse搜索功能不符合标准,要么是因为它有缺陷(不太可能),要么是该项的实际定义在其范围之外(例如,您包含了一个不在项目中的头)。

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

当然,这些都是猜测,但这是我能用给出的信息做的最好的事情,我至少想认为它们是有根据的猜测:-)

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

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