View Single Post
Old 20-12-2007, 14:17   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da ilsensine Guarda i messaggi
Unrue non è stato chiaro su dove ha messo l'implementazione, se è in un file sorgente allora il comportamento è corretto...
Si', per questo non mi era chiaro dove voleva mettere il corpo della funzione.

Edit:
Contr'ordine, il comportamento del compilatore non e' conforme allo standard.

In questa situazione:

.hpp
Codice:
class A
{
public:
	inline void m();
};
.cpp
Codice:
inline void A::m()
{
}
Il compilatore deve dare un "undefined reference" sia con ottimizzazioni attivate sia con ottimizzazioni disattivate se m e' referenziato in un'unita' di compilazione diversa da dove e' definito. Non deve semplicemente assumere il non inline quando le ottimizzazioni sono disattivate.
Se una funzione e' dichiarata inline in un'unita' di compilazione, il corpo deve essere definito in quell'unita'. Il comportamento del compilatore in relazione alla semantica del codice non deve cambiare a seconda delle ottimizzazioni.

Ultima modifica di fek : 20-12-2007 alle 14:37.
fek è offline   Rispondi citando il messaggio o parte di esso