這真的很平凡,但我得到了一個我沒有想到的錯誤。引用全局名稱空間中的某些東西?
我有一些代碼,是一個命名空間
內的下面是一些僞代碼,代表我的代碼的結構:
namespace A {
void init() {
initialize_kitchen_sink();
}
#include "operations.h" // declares shake_and_bake()
void foo() {
shake_and_bake();
}
void cleanup() {
// do nothin' cuz i'm a slob
}
}
錯誤:
undefined reference to `A::shake_and_bake`
operations.h文件中的所有內容都在名稱空間A中聲明。如果將文件operations.h包含在另一個文件中但在不同的名稱空間(如全局)中,這些將完全不同。注意#include是預處理器的一部分,並且在任何語言構造完成之前就已經運行了。 –