2011-06-11 27 views
1

我在哪裏可以找到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** 
+0

它來自鏈接庫嗎? – Xeo 2011-06-11 02:00:23

回答

3

我可以看到兩種直接的可能性。

  1. Eclipse的搜索功能是沒有達到標準,可能是因爲它是越野車(不太可能),或者該項目的實際定義其範圍之外的地方舉行(比方說,例如,你包括報頭不在項目中)。

  2. 實際的定義是不在目標文件或庫,在這種情況下,你可能不應擔心定義爲所有,但可能源文件 - 這是「潛伏」的原因封裝。

當然,這些都是猜測,但它是我能給出的信息做到最好,我想至少喜歡認爲他們正在猜測:-)

1

如果您使用「extern」在您的代碼中聲明它,然後在另一個源文件中定義該文件,該文件可能是在您正在使用的庫中編譯的。參見:

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

+0

感謝法比奧,但它只說:list_node end_of_list;它沒有價值。它的價值是什麼? – 2011-06-11 02:54:51

+0

它看起來像對象地址被用作「魔術指針」來標記鏈表中的最後一個元素,所以它的值並不重要。無論如何,請注意它有一個初始化info = 0的默認構造函數; next = this – 2011-06-12 23:01:26

+0

同時檢查sql_list.h中的這條評論:「所有列表以一個指向'end_of_list'元素的指針結束,該指針是一個null指針和下一個指針指向它自己,這使得遍歷列表的速度非常快,因爲我們不必測試不能包含空指針的列表的特殊條件。「 – 2011-06-12 23:01:58

相關問題