sto giocando con la creazione di eccezioni in C++ e ho il seguente codice di prova:C++ eccezione e simbolo ld avvertimento
#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?");
}
sto compilando questo con:
ICPC -std = c + +11 -O3 -m64
Su compilazione sto ottenendo questo ld avvertimento:
ld: avviso: accesso diretto in _main al simbolo debole globale __ZN7MyerrorD1Ev significa che il simbolo debole non può essere sovrascritto in fase di runtime. Ciò è stato probabilmente causato da diverse unità di traduzione compilate con diverse impostazioni di visibilità.
Non ricevo questo avviso se utilizzo g ++ anziché icpc.
Non sono stato in grado di capire cosa significa e cosa sta causando la generazione di questo avviso. Il codice funziona come previsto, tuttavia mi piacerebbe capire cosa sta succedendo.
"#include"? –
Hai provato a compilare con '-fvisibility = hidden'? – user2155932
@jotep La stringa inclusa non ha modificato nulla. – deepak