Se eseguo una funzione in linea, cambia il suo collegamento con il collegamento interno? Per esempio: sto usando o chiamando la funzione inline in due file:La funzione inline influisce sul suo collegamento?
file1.cpp
//function definition
inline void foo() {}
file2.cpp
//function definition
inline void foo() {}
Perché ho bisogno di definire la funzione inline in ogni file per essere in grado di chiamare? Sto ottenendo un collegamento interno? Cosa succede se uso static inline
?
Mentre so che il tag è C++, è bene sapere che inline in C sono il collegamento interno predefinito, l'opposto di C++ –
@Jesse: No, non è il contrario. La funzione Inline C (C99) ha anche il collegamento esterno per impostazione predefinita a meno che non venga dichiarata statica. – user1086635
@ user1086635: No, in C l'impostazione predefinita è il collegamento interno. C99 6.7.4/6 dice "Una definizione in linea non fornisce una definizione esterna per la funzione, e non vieta una definizione esterna in un'altra unità di traduzione.", Dando un esempio creando una definizione esterna con una dichiarazione extra 'extern' . –