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 -03 -m64나는이 LD 경고를 얻고있다
ld : 경고 : _main에서 전역 약한 기호에 직접 액세스 __ZN7MyerrorD1Ev는 런타임에 약한 기호를 무시할 수 없음을 의미합니다. 이는 서로 다른 번역 단위가 다른 가시성 설정으로 컴파일 된 으로 인해 발생했을 가능성이 큽니다.
icpc 대신 g ++를 사용하면이 경고 메시지가 표시되지 않습니다.
나는 이것이 무엇을 의미하는지, 그리고이 경고의 원인이 무엇인지 이해하지 못했습니다. 코드는 예상대로 실행되지만, 나는 원하지 않는 일을하고 싶습니다.
#include <iostream>
#include <stdexcept>
#include <new>
using namespace std;
class Myerror : public runtime_error {
public:
Myerror(const string &message) throw(): runtime_error(message) { }
virtual ~Myerror() throw() {}
};
int main(int argc, char *argv[]) {
throw Myerror("wassup?");
}
왜 사용하지 않은 문자열에 errmsg 필요합니까 :
당신은 # #을 포함 했습니까? –
'-fvisibility = hidden'으로 컴파일하려고 했습니까? – user2155932
@jotep 문자열을 포함하여 아무 것도 변경되지 않았습니다. – deepak