Ho uno spazio dei nomi con funzione inline che verrà utilizzato se diversi file di origine. Quando si tenta di collegare la mia applicazione, la funzione inline viene segnalata come simboli duplicati. Sembra che il mio codice semplicemente non incorpori le funzioni e mi chiedevo se questo è il comportamento previsto e come gestirlo al meglio.La funzione inline nello spazio dei nomi genera simboli duplicati durante il collegamento su gcc
ho utilizzate le seguenti opzioni: gcc-g -Wextra -pedantic -Wmissing-field-inizializzatori -Wredundant-decls -Wfloat-uguale--Wno riordino--Wno-lunga lunga Lo stesso stile codice sembra per compilare e collegare correttamente quando si costruisce in un ambiente VC7.
Nell'esempio di codice seguente mostra la struttura del codice:
/* header.h */
namespace myNamespace {
inline bool myFunction() {return true;}
}
/* use_1.cpp */
#include "header.h"
...
bool OK = myNamespace::myFunction();
...
/* use_2.cpp */
#include "header.h"
...
bool OK = myNamespace::myFunction();
...
OK una variabile globale in ogni file cpp? Ciò causerebbe un errore di simbolo duplicato. Supponendo che non sia globale, il tuo esempio è C++ legale. Prova a compilare con -Winline. Quale versione di gcc stai usando? –
Si prega di inviare il messaggio del compilatore attuale. L'errore si verifica con file di origine minimi (solo le righe menzionate senza le cose implicite da ...)? –
Una volta cambiato uno dei nomi di 'OK' in' OK1', ho aggiunto una funzione 'main' vuota e rimosso' ... '; la compilazione di entrambi i file con le opzioni fornite ha funzionato correttamente per me. È necessario inviare ulteriori dettagli in quanto la causa del tuo errore non è qui. –