6
我在玩與創建使用C異常++,我有以下的測試代碼:C++異常和ld符號警告
#include <iostream>
#include <stdexcept>
#include <new>
using namespace std;
class Myerror : public runtime_error {
private:
string errmsg;
public:
Myerror(const string &message): runtime_error(message) { }
};
int main(int argc, char *argv[]) {
throw Myerror("wassup?");
}
我與編譯如下:
ICPC -std = C + +11 -O3 -m64
在編譯時我得到這個LD警告:
ld:警告:在_main中直接訪問全局弱符號 __ZN7MyerrorD1Ev表示弱符號不能在運行時被覆蓋。這可能是由不同的可見性設置編譯的不同翻譯單元 造成的。
如果我用g ++代替icpc,我不會得到這個警告。
我還沒有能夠理解這是什麼意思,什麼是導致此警告產生。代碼按預期運行,但是我想不想發生什麼事情。
你有沒有'#include'? –
2013-03-14 06:12:19
你試過用'-fvisibility = hidden'進行編譯嗎? – user2155932 2013-03-14 06:27:05
@jotep包括字符串沒有改變任何東西。 – deepak 2013-03-14 17:24:58