1
我有兩個類One和Two出現在兩個單獨的cpp文件中。的內容如下循環依賴庫的C++鏈接器順序
#include "One.h"
#include "Two.h"
namespace Sample
{
One::One() {}
void One::foo1() {
Two t;
t.foo();
}
void One::foo() { }
}
和Two.cpp是
#include "Two.h"
#include "One.h"
namespace Sample {
Two::Two() { }
void Two::foo1() {
One t;
t.foo();
}
void Two::foo() {}
}
使用
g++ -c One.cpp; ar cr libOne.a One.o; ranlib libOne.a
g++ -c Two.cpp; ar cr libTwo.a One.o; ranlib libTwo.a
對於主
創建的一個靜態庫和二,我調用兩者的各自foo1
功能分類並編譯主要如下
g++ main.cpp -o main -L. -lOne -lTwo
即使我更改One和Two的順序,代碼也會編譯。
我期待的代碼不應該編譯,除非我重複一,二的順序,因爲存在循環依賴。
可能是什麼原因?
我運行Ubuntu 14.04使用g ++版本4.8.2